关于事务嵌套失效的问题

举例:两个均加了事务注解的方法A和B,在A方法中调用B方法,会导致B的事务不起作用,因为加了事务注解的方法,并不是本身在执行,而是 代理类在执行,而在A方法中调用B方法的时候,默认的是this.B();,代表并没有使用代理类来执行,所以不会享受代理的服务。也就是不起作用的原因。

解决方法:

1. 获取当前service的代理类

IAccountAdjustmentService accountAdjustmentService = (IAccountAdjustmentService) AopContext.currentProxy();

2. 从Bean容器中获取

此方法需要单独写一个ApplicationContextAware的实现类。

applicationContext.getBean()
原文地址:https://www.cnblogs.com/zhangjianbing/p/9804354.html