关于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
祝学习愉快~
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星