事务方法失效情况

1、声明了事务的方法没有用public修饰,Spring事务基于AOP(动态代理),默认只对public方法生效。
2、事务方法里触发的异常大于等于Transactional注解配置的rollbackFor的回滚异常,例如Transactional注解默认是回滚RuntimeException以及以下的异常 ,但是触发了IOException,那么是不会回滚的。
3、同一类中方法调用:如果在同一个类中,没有声明事务的方法调用另一个声明了事务的方法,这会导致事务失效,因为此时是直接通过方法调用,而不是通过代理。
4.异常被捕获:如果在事务方法中捕获了异常但没有没有重新抛出异常或没有标记为回滚则事务不会回滚。
5.如果在声明了事务的方法中异步执行新的线程任务发生异常了,那么事务不会回滚。
6.如果表的数据库引擎不支持事务,比如MYISAM引擎,那么也会导致事务失效。
关于第四点我在最近的工作中碰到过,这一点很容易忽略!
image
image
image

posted on 2025-11-08 16:53  jaba  阅读(0)  评论(0)    收藏  举报

导航