方法调用方法事物失效问题
方法调用方法事物失效问题
如下实例 中,此时事务是不生效的,因为@Transactional注解事务是通过代理来控制的,方法调用本类方法,事务不会生效。
@Service public class TranditionalClassImpl implements TranditionalClass { @Override public void a() { b(); } @Transactional public void b(){ System.out.println("do something"); } }
可改成如下
@Service @EnableAspectJAutoProxy(proxyTargetClass = true,exposeProxy = true) public class TranditionalClassImpl implements TranditionalClass { @Override public void a() { ((TranditionalClass) AopContext.currentProxy()).b(); b(); } @Transactional public void b(){ System.out.println("do something"); } }
或者
@Service public class TranditionalClassImpl implements TranditionalClass { @Autowired TranditionalClass tranditionalClass; @Override public void a() { this.tranditionalClass.b(); } @Transactional public void b(){ System.out.println("do something"); } }
上一篇:
IDEA上Java项目控制台中文乱码