嵌套事务未回滚解决方案(^_^)

本文探讨了Spring中嵌套事务的传播行为,特别是在`REQUIRED`和`REQUIRES_NEW`模式下的事务处理。在不同场景下,由于动态代理的影响,事务回滚行为可能与预期不符。当`child()`方法在`parent()`方法内部抛出异常时,如果未被捕获,两个方法都会回滚;如果捕获了异常,两个方法则都会提交。这揭示了Spring事务管理中动态代理导致的事务失效问题。
摘要由CSDN通过智能技术生成

首先想到的是事务的传播行为

这里的Propagation是事务的传播行为,默认是REQUIRED,意思是如果当前没有事务,就开启一个事务,如果已经存在一个事务,就加入到这个事务中;

REQUIRES_NEW,新建事务,如果当前存在事务,把当前事务挂起;意思是这里执行到child()方法时,parent所在的事务就会挂起,方法child就会起一个新的事务,等待方法child的事务完成以后,方法parent才继续执行。如下代码:

主方法parent()里调child()方法,当child()抛出异常时,parent()和child()均未回滚。背景先介绍到这里,你可以先想想为什么没回滚,下面由浅入深讲解。

一、场景分析
 场景A:

 这里是分别执行了两个事务&#x

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值