关于propagation="REQUIRES_NEW"事务的一些问题
老师,打比方说现在有三个事务嵌套,事务一包含了事务二和三,在运行过程中,事务一挂起后,事务二运行报错,事务三是继续运行下去独立执行他的代码吗?
我理解的是事务三执行完之后再执行事务一的代码1在最后控制台输出事务二的报错信息,不知道理解的对不对还请老师指点。
18
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小小
2022-09-26 12:29:35
同学你好,理解有些偏差,具体执行过程可参考下方案例一。
REQUIRES_NEW会新开启事务,外层事务不会影响内部事务的提交/回滚,但REQUIRES_NEW的内部事务的异常,会影响外部事务的回滚。
以课程源码为测试代码:
案例一 当importJob1()方法中存在异常时,运行过程日志如下:
案例二 当importJob2()方法中存在异常时,运行过程日志如下:
案例三 importJob1()、importJob2()方法中无异常,但startImportJob存在异常是,执行过程日志如下:
官方文档参考:https://docs.spring.io/spring-framework/docs/current/reference/html/data-access.html#tx-propagation
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星