springboot中@Transactional失效
时间: 2023-11-03 07:00:53 浏览: 116
spring的@Transactional注解用法解读
当@Transactional注解在Spring Boot中失效时,可以按照以下步骤进行排查:
1. 确认数据库对应的库、表所使用的引擎是什么,如果是MyISAM引擎,需要改为InnoDB引擎才能支持事务。
2. 确认被@Transactional注解标记的方法是public的。
3. 确认被@Transactional注解标记的方法所在的位置,如果该方法是在同一个类内部被调用,事务是不会生效的。
4. 确认需要调用被@Transactional注解标记的方法并支持事务特性的调用方是在@Transactional所在的类的外部。即使被调用方法已使用了@Transactional注解标记,如果调用方是在同一个类内部,事务也不会生效。
5. 注意,注解为事务范围的方法中,事务的回滚仅对于unchecked异常有效,对于checked异常无效。如果希望一般的异常也能触发事务回滚,可以在注解了@Transactional的方法上,设置@Transactional的rollbackFor参数为Exception.class。
6. 如果是非Spring Boot项目,还需要检查Spring的XML配置文件中是否正确配置了扫描包范围,确保在启动时Spring容器能够创建和加载对应的Bean对象。
阅读全文