@Transactional 注解失效场景

2024-09-29  本文已影响0人  code_搬运工

1、@Transactional 应用在非public方法上
Java的访问权限主要有四种 :private、default、protected、public,它们的权限从左到右,依次变大。

2、方法用final修饰
如果一个方法不想被子类重写,我们可以将该方法定义为final。我们知道@Transactional是通过AOP来实现的,如果方法被定义为了final,那么它就不能被代理类重写,也就无法使用事务

3、未被Spring管理
@Transactional是由Spring容器所管理,如果一个使用@Transactional的Bean不是通过Spring容器创建的(直接new的),则@Transctional是无效的

4、方法内部调用
当@Transactional注解的方法在同一个类的内部被调用时,会导致后面调用方法的@Transactional失效。
这是因为Spring的事务管理是基于AOP(面向切面编程)实现的,而AOP代理默认是通过JDK动态代理或CGLIB代理来实现的。

原理分析

5、多线程调用
两个方法不在一个线程中
6 数据库不支持

上一篇 下一篇

猜你喜欢

热点阅读