@Sevice public class Test { public void a(){ b(); } @Transactional public void b(){ System.out.print("b"); } }
此时事务时不生效的,因为@Transactional注解事务是通过代理来控制的,方法调用本类方法,事务不会生效。
解决方法:
// 增加该注解开启代理 @EnableAspectJAutoProxy(proxyTargetClass = true,exposeProxy = true) @Sevice public class Test { public void a(){ // 通过代理方式调用方法 ((Test)AopContext.currentProxy()).b(); // b(); } @Transactional public void b(){ System.out.print("b"); }
原文:https://www.cnblogs.com/joequa/p/12804409.html