spring事务什么时候会失效?

spring事务什么时候会失效?

spring事务的原理是AOP,进行了切面增强,那么失效的根本原因是这个AOP不起作用了!
常见情况有如下几种

  1. 发生自调用,类里面使用this调用本类的方法(this通常省略),此时这个this对象不是代理类,而是 UserService对象本身!
    解决方法很简单,让那个this变成User Service的代理类即可!

  2. 方法不是public的
    @Transaction只能用于pub1ic的方法上,否则事务不会失效,如果要用在非pub1ic方法上,可以开启 AspectJ代理模式。

  3. 数据库不支持事务

  4. 没有被spring管理

  5. 异常被吃掉, 事务不会回滚(或者抛出的异常没有被定义,默认为RuntimeException)

posted @ 2022-04-04 16:35  来自未来的信  阅读(65)  评论(0)    收藏  举报