Spring事务源码详解

您所在的位置:网站首页 后端入门难吗 Spring事务源码详解

Spring事务源码详解

#Spring事务源码详解| 来源: 网络整理| 查看: 265

上篇文章介绍了事务开启,前面介绍了解析adviors。

spring事务源码详解-spring原码(一)icon-default.png?t=N5K3https://blog.csdn.net/ke1ying/article/details/131360060 事务源码

 

 

先从缓存里获取,主要是判断循环依赖是否创建动态代理

进去wrapIfNecessary

先if判断advised是不是需要增强bean

如果是advised增强bean不需要动态代理

再重复判断一下是否不是切入点一些类,是的话加入advised

这里通过getAdvicesAndAdvisorsForBean拿到我们之前配置的advices

 

通过AopUtils里的find找到我们可以用的advisors

这里主要拿到advisors的pointCut,和配置类里的事务属性源

 

这里也有缓存,提高性能

当我们的缓存为空,则去解析我们的注解

解析成事务属性transactionAttribute,解析到代表匹配成功

在computeTransaction方法里面,拿到我们最终方法(加入你当前类是个接口,会拿到你实现类的方法)

先根据方法解析,再根据实现类解析

当我们执行具体方法的时候,回来到我们动态代理类。

拿到我们之前解析的事务属性

在try之前开启事务

在catch里面回滚

在最后commit

如果有传播性的话,会根据事务传播行为来确定是否开启。

开启事务用createTransactionIfNecessary方法开启,判断是否有必要开启。

在这个里面会判断传播行为,一个一个判断。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3