Transactional注解不生效的情况
时间: 2023-11-08 17:58:00 浏览: 70
Spring @Transactional注解失效解决方案
5星 · 资源好评率100%
1. 没有开启事务管理器
在使用@Transactional注解时,需要开启事务管理器。如果没有开启事务管理器,@Transactional注解就不会生效。
2. 方法访问修饰符问题
@Transactional注解只对public方法有效。如果方法的访问修饰符是private或protected,@Transactional注解就不会生效。
3. 异常处理问题
默认情况下,@Transactional注解只会对RuntimeException及其子类进行事务回滚。如果方法抛出的是其他类型的异常,事务就不会回滚。如果需要对其他类型的异常进行事务回滚,需要在@Transactional注解中指定rollbackFor属性。
4. 注解生效范围问题
@Transactional注解只对通过Spring容器管理的类中的方法生效。如果方法不是通过Spring容器管理的,@Transactional注解就不会生效。
5. 注解是被继承的
如果一个类的父类使用了@Transactional注解,子类也会继承父类的@Transactional注解。如果子类中的方法也使用了@Transactional注解,就会出现注解冲突的问题。此时需要在子类的方法上添加@Transactional注解,并指定propagation属性为REQUIRES_NEW,表示子类方法开启新的事务。
阅读全文