因为 spring 事务是基于代理来实现的,所以某个加了@ Transactional 的方法只有是被代理对象调用时,那么这个注解才会生效,所以如果是被代理对象来调用这个方法,那么@ Transactional 是不会生效的。
同时如果某个方法是 private 的,那么@ Transactionalt 也会失效,因为底层 cglib 是基于父子类来实现的,子类是不能重载父类的 private 方法的,所以无法很好的利用代理,也会导致@ Transactianal 失效
Spring 中什么时候@ Transactional 会失效
最新推荐文章于 2023-04-23 10:20:35 发布