1、spring事务
sring事务的管理是通过AOP动态代理实现
1.1:同一个class中,方法A调用方法B,B有事务,A没有事务,B出现异常则AB都无法回滚
B抛异常,AB都无法回滚
1.2:不同class,A类中调用B类中的方法,A类有事务,B类没有事务,B类出现运行时异常,AB都可回滚。
B抛异常,AB都可回滚
1.3: 不同class,如果A调用B中方法1,方法1又调用B的方法2,方法1、方法2都有事务,方法2抛异常,A中对异常进行捕获后未抛出异常,则AB都回滚。因为这种场景AB是同一事务,B方法的异常已经将整个事务标记为回滚
A对B的异常捕获未抛出,AB也都会回滚
1.4: 不同class,如果A调用B中方法1,方法1又调用B的方法2,方法1无事务,方法2有事务,A中对异常进行捕获后未抛出异常,则AB都不会回滚,但是如果A未对异常捕获,则AB都会回滚
A对B异常捕获未抛出,AB都不会回滚