spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现


Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现

  • 理论梳理
  • 源码
    • 声明式事务管理 @Transaction AOP实现
      • 获取Advisor
        • 获取Advisor过程中 我们熟知的BeanFactoryTransactionAttributeSourceAdvisor作用过程
        • 创建代理
        • 拦截器

熟悉事务你就会明白事务的特性在于保证一系列操作的整体有效性,而不是某条语句,这和aop思想不谋而合,aop思想就可以通过将一系列操作织入到具体的流程当中来保证整体的有效性。
二者的意义具有共同点:使得操作的逻辑单位从一条语句扩展到一系列语句。
理论梳理 spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

首先拿到事务的信息,这个信息在@Transaction注解上,我们通过获取注解上的信息封装到TransactionAttribute(事务属性)上
之后就是AOP的处理
然后到达执行方法时,通过拦截器TransactionInterceptor然后跳转到事务的处理函数TransactionAspectSupport#invokeWithinTransaction
在这之前我们拿到了事务的信息,通过事务信息我们就可以创建事务管理器,事务管理器顾名思义就是管理事务的主要组件,通过事务管理器我们就可以处理事务的创建,以及我们常见的事务各种操作。
源码 声明式事务管理 @Transaction AOP实现 拿一个最简单的场景来开始声明式事务管理的分析,
spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

获取Advisor
spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

获取Advisor过程中 我们熟知的BeanFactoryTransactionAttributeSourceAdvisor作用过程 首先拿到了advisor,但此时还是未经筛选的Advisor,所以进入筛选阶段
spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

创建代理 createProxy
spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

拦截器 spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

【spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现】spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

spring|Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现
文章图片

    推荐阅读