spring 同类方法调用事务失效解决办法
可以使用AopContext.currentProxy()获取到当前类的代理对象,然后再用代理对象进行调用本类中的方法
(图片来源网络,侵删)
如下 f1 和f2 属于同一个类
public voidf1() { ((本类名)AopContext.currentProxy()).f2(); } @Transactional public f2() { }
AopContext.currentProxy()方法的使用场景还包括:
- 在同一类的非切面方法中获取代理对象,确保切面可以正常生效。
- 在不同类中,非事务方法调用事务方法时,确保事务生效。
- 在同一个类中,事务方法调用非事务方法时,事务仍然具有传播性,确保事务生效。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。