spring事务
目录
总结
事务方法调private方法
本类的事务方法调自己的private非事务方法,报异常可以回滚,保证事务的整体性。
失效的场景
方法不是public
- 源码中事务方法,会判断必须是public
![image]()
final修饰
- spring要用aop,动态代理,增强该方法(jdk,cglib),final修饰的方法,子类无法重写。
自调用问题
1:自己注入自己(亲测最简单,事务方法用代理成员变量调用)

2:AopContext拿


3:注入全局作用域

类是否已交给spring容器管理
事务是否开启(springboot默认开启,xml需要添加配置)

rollBack的Exception范围
这里有个知识点:java规范规定,所有非RuntimeException的异常,必须throws 或者 在代码里try catch,所以方法上没有throws 并且代码里也无手动try 非RuntimeException异常,那spring默认写法 @Transactional是一定能保证事务的。
@Transactional正常这样写就可以,不正常指的是,方法上显式的throws 非RuntimeException,并且方法里没有try catch后 throw 为RuntimeException异常
方法上显式的throws
1:要么加上属性@Transactional(rollbackFor = Exception.class)
2:要么方法里,try catch后,自己throw 为RuntimeException


浙公网安备 33010602011771号