Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
- 理论梳理
- 源码
-
- 声明式事务管理 @Transaction AOP实现
-
- 获取Advisor
-
- 获取Advisor过程中 我们熟知的BeanFactoryTransactionAttributeSourceAdvisor作用过程
- 创建代理
- 拦截器
熟悉事务你就会明白事务的特性在于保证一系列操作的整体有效性,而不是某条语句,这和aop思想不谋而合,aop思想就可以通过将一系列操作织入到具体的流程当中来保证整体的有效性。
二者的意义具有共同点:使得操作的逻辑单位从一条语句扩展到一系列语句。
理论梳理
文章图片
首先拿到事务的信息,这个信息在@Transaction注解上,我们通过获取注解上的信息封装到TransactionAttribute(事务属性)上
之后就是AOP的处理
然后到达执行方法时,通过拦截器TransactionInterceptor然后跳转到事务的处理函数TransactionAspectSupport#invokeWithinTransaction
在这之前我们拿到了事务的信息,通过事务信息我们就可以创建事务管理器,事务管理器顾名思义就是管理事务的主要组件,通过事务管理器我们就可以处理事务的创建,以及我们常见的事务各种操作。
源码 声明式事务管理 @Transaction AOP实现 拿一个最简单的场景来开始声明式事务管理的分析,
文章图片
获取Advisor
文章图片
获取Advisor过程中 我们熟知的BeanFactoryTransactionAttributeSourceAdvisor作用过程 首先拿到了advisor,但此时还是未经筛选的Advisor,所以进入筛选阶段
文章图片
文章图片
创建代理 createProxy
文章图片
文章图片
拦截器
文章图片
【spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现】
文章图片
文章图片
文章图片
文章图片
文章图片
推荐阅读
- Java|UML类图的六大关系,最佳学习理解方式
- java|springboot中如何集成logback呢()
- java|解析Springboot定时任务源码写一个自己的动态定时任务组件
- 数组(二维数组)|【无标题】
- API|淘宝API接口大全
- java|Docker 文件映射
- java|Linux给目录及目录下所有文件赋予最高权限
- java|Linux卸载RabbitMQ
- java|mybatis idea 好用的插件