Spring @Transactional自调用失效问题

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

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

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

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

评论
 我想说:
==已经到底了==
关注: 粉丝: 积分:
工联信息网
如有问题请致邮箱:need@glxxw2018.com
不良信息反馈及建议请致邮箱:accusation@glxxw2018.com