@Transactional失效情况
总结
- 类A中方法a调用类A中方法b,方法a没有添加事务@Transactional,此时调用方法b,事务是不会生效的;如果想事务生效,需要将方法a添加事务@Transactional。
- 不在同一线程中,事务是不生效的
- try catch会让事务失效,要想让其生效,需要手动回滚事务,或者抛出异常
- Spring事务是基于aop实现的,aop是基于动态代理实现的,所以事务要想生效,那么必须是被Spring aop动态代理后的类。
原文链接
@transactional不生效原因