背景:面试被问到一个提,说说事务失效的场景,答的很不好,所以平时还是加强总结,发散思维,多做准备。
失效可能的原因
Spring 事务失效的8大原因
1、数据库引擎是否支持事务(Myisam不支持事务)
2、注解所在的类是否被加载成Bean(对象没有被Spring管理)
3、注解所在的方法是否为public修饰
4、是否发生了自身调用问题
5、所有数据源是否加载了事务管理器
6、@transaction的propagation配置是否正确
7、捕获了异常
8、checked exceptions无效,需要配置rollbackFor = Throwable.class
ps:交简单的说明了几种场景
java中异常的分类(事务只回滚unchecked异常)
将派生于Error或者RuntimeException的异常称为unchecked异常,所有其他的异常成为checked异常。
ps:
public class RuntimeException extends Exception public class Exception extends Throwable
Exception中非RuntimeException的异常为checked 异常,编译会无法通过