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

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

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

熟悉事务你就会明白事务的特性在于保证一系列操作的整体有效性,而不是某条语句,这和aop思想不谋而合,aop思想就可以通过将一系列操作织入到具体的流程当中来保证整体的有效性。

二者的意义具有共同点:使得操作的逻辑单位从一条语句扩展到一系列语句。

理论梳理

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

首先拿到事务的信息,这个信息在@Transaction注解上,我们通过获取注解上的信息封装到TransactionAttribute(事务属性)上
之后就是AOP的处理
然后到达执行方法时,通过拦截器TransactionInterceptor然后跳转到事务的处理函数TransactionAspectSupport#invokeWithinTransaction
在这之前我们拿到了事务的信息,通过事务信息我们就可以创建事务管理器,事务管理器顾名思义就是管理事务的主要组件,通过事务管理器我们就可以处理事务的创建,以及我们常见的事务各种操作。

源码

声明式事务管理 @Transaction AOP实现

拿一个最简单的场景来开始声明式事务管理的分析,
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现_第2张图片

获取Advisor

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

获取Advisor过程中 我们熟知的BeanFactoryTransactionAttributeSourceAdvisor作用过程

首先拿到了advisor,但此时还是未经筛选的Advisor,所以进入筛选阶段
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现_第4张图片

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

创建代理

createProxy
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现_第6张图片

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

拦截器

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

Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现_第9张图片
在这里插入图片描述
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现_第10张图片
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现_第11张图片
Spring及Spring boot 第四章-第二节 Spring声明式事务管理 @Transaction AOP实现_第12张图片

你可能感兴趣的:(spring,spring,boot,java)