@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"); }