分布式事务实战八(Spring事务框架源码初探之基于AOP思想与动态代理无缝插入事务支持)

本文介绍了Spring如何基于AOP动态代理实现事务管理。通过模拟@Transactional注解的功能,展示了在方法执行前后如何添加事务增强逻辑,包括开启事务、异常时回滚事务和正常执行后提交事务的过程。并通过测试验证了事务管理的正确性。
摘要由CSDN通过智能技术生成

spring对我们的service组件创建了一个动态代理,你加了@Transactional注解之后,就对这个动态代理插入了事务管理的增强逻辑,开始执行方法之前先开启事务,方法中有报错就回滚事务,如果没有报错就提提交事务。如下图:
在这里插入图片描述
我们可以基于AOP先来模拟下@Transactional的效果,其实AOP的本质就是动态代理,而动态代理说白了就是一种代理模式,通过代理模式我们可以额外添加一些增强逻辑。因此我们可以利用代理类中的增强逻辑来实现@Transactional注解的效果,那么这个是什么意思呢?我们可以这样做,看下边这张图:
在这里插入图片描述
通过上边的图,我们可以看到,FlowRechargeCenterService.finishRefillData调用代理类方法时,代理类首先会开启一个事务,然后再执行目标类的方法,当目标类方法执行结束之后,再来看下此时是否发生异常,如果发生了异常,那么就直接回滚事务&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youngerone123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值