Spring @Transactional自调用失效问题

原创 创建时间:2020-03-06 访问量:42 赞:0 踩:0

我们有时候在一个Service类的方法中自调用该类的使用@Transactional注解的方法,这个时候是没有事务的。

Spring 数据库事务的实现原理是AOP,而AOP的原理是动态代理,在自调用的过程中,是类自身的调用,而不是代理对象去调用,那么就不会产生AOP,这样Spring就不能把你的代码织入到约定的流程中,于是就产生了失效的情况。

为了克服这个问,我们可以把这个方法写到另一个类中,注册到该Service类中进行调用。获者使用SpringContextHolder.getBean方法从Ioc中获取该类对象再进行调用。

评论
 我想说:
==已经到底了==
关注: 粉丝: 积分:
工联信息网
如有问题请致邮箱:need@glxxw2018.com(仅限本站无法查询到的资料);本站能够查询到的资料请关注“工联信息网”公众号,通过页面提供的资源码查询!
不良信息反馈及侵权投诉建议请致邮箱:accusation@glxxw2018.com