Spring关于this调用事务不生效的问题

2020-04-10  本文已影响0人  木星大人_532a

今天与同事日常交流时,他说在service中使用this调用本类中@Transactional标注的方法该事务是不会生效的。原因是this调用的不是代理类中的方法而是非代理类中的方法。于是百度了一下,发现有很多人这么说。

我听了感觉很疑惑,众所周知,Spring在启动时会为@Component等或继承自该注解(@Controller、@Service...)的标注类生成代理类并实现各种注解。那么,当一个请求到达Controller时,在Controller调用Service中的方法,此时拿到的Service是Spring为我们注入的代理类,再在Service中的A方法使用this拿到的应该也是代理类啊。于是动手实践了一下。

如下图:

下图可以观察到,this拿到的对象和当前对象一致

事务也可以生效,并没有出现他所描述的问题。

遂猜想是不是他想表达的是,如果要调用方法一定要从容器中拿呢?最终我还是说服自己要相信实践。

鄙人拙见,恳请大佬斧正!

上一篇 下一篇

猜你喜欢

热点阅读