1.数据库不支持事务。
Spring事务生效的前提是所连接的数据库要支持事务,如果底层的数据库都不支持事务,则Spring的事务肯定会失效。例如,如果使用的数据库为MySQL,并且选用了MyISAM存储引擎,则Spring的事务就会失效。
2.事务方法未被Spring管理。
如果事务方法所在的类没有加载到Spring IOC容器中,也就是说,事务方法所在的类没有被Spring管理,则Spring事务会失效。
3.方法没有被public修饰。
如果事务所在的方法没有被public修饰,此时Spring的事务会失效。
4.同一类中方法调用。
如果同一个类中的两个方法分别为A和B,方法A上没有添加事务注解,方法B上添加了 @Transactional事务注解,方法A调用方法B,则方法B的事务会失效。
5.未配置事务管理器。
如果在项目中没有配置Spring的事务管理器,即使使用了Spring的事务管理功能,Spring的事务也不会生效。
6.方法的事务传播类型不支持事务。
如果内部方法的事务传播类型为不支持事务的传播类型,则内部方法的事务在Spring中会失效。
7.不正确的捕获异常。
不正确的捕获异常也会导致Spring的事务失效。
8.错误的标注异常类型。
如果在@Transactional注解中标注了错误的异常类型,则Spring事务的回滚会失效。