前言
在使用事务的时候,偶尔会出现失效的情况,往往会让人摸不着头脑,明明已经加了@Transactional了啊,以下整理了几种可能导致事务失效的场景。
1、同一个类里的方法调用
加事务的方法不会被spring aop所代理的对象管理,所以无效。
2、方法不是public修饰
computeTransactionAttribute方法在获取Transactional注解信息时, 会检查目标方法的修饰符是否为 public,不是 public则不会获取@Transactional 的属性配置信息
3、方法中使用try catch
如果catch了异常 处理完没有抛出 那么也会导致事务失效
4、rollbackFor设置原因
rollbackFor设置了之后,事务只会在指定的设置下生效
5、数据库引擎不支持事务
比如 mysql的 innodb支持 但是myisam不支持