Seata之SpringBootStarter模块分析

前言

Seata服务部署指南

使用seata,以目前最新的坐标版本来看

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-seata
            2021.1
        

其内部seata相关的依赖仅为seata-spring-boot-starter,可知其是整体功能的起始点

以seata目前最新的发布版本1.4.2来分析下的源码:GitHub

模块介绍

分为两部分:

  • seata-server:事务协调器(TC),独立进程执行
  • seata-spring:spring体系下相关使用模块(此篇讲解部分)

配置

模块对应的目录结构如下


可见spring.factories

  • SeataPropertiesAutoConfiguration 初始化默认配置参数
  • SeataDataSourceAutoConfiguration 处理datasource(两个方面:BeanPostProcessor、ProxyCreator)
  • SeataAutoConfiguration 全局事务扫描及设置
  • HttpAutoConfiguration 配置拦截器及异常处理器WebMvcConfigurerAdapter

重点关注SeataAutoConfiguration

  • DefaultFailureHandlerImpl 失败处理

  • GlobalTransactionScanner 事务扫描器

扫描

GlobalTransactionScanner继承自AbstractAutoProxyCreator

AbstractAutoProxyCreator:自动代理生成器,为符合条件的bean设置代理

至此含有注解(TwoPhaseBusinessAction、GlobalTransactional、GlobalLock)的bean就被设置了拦截器

拦截器

GlobalTransactionalInterceptor

方法触发时拦截对应的执行信息(GlobalTransactional、GlobalLock注解情况),根据注解类型不同进行不同的逻辑处理

以GlobalTransactional类型为例

采用的是:设计模式行为型-命令模式

主要任务:对执行的方法子事务进行管理

详见TransactionalTemplate.execute

TccActionInterceptor

同GlobalTransactionalInterceptor触发模式

事务具体的执行交由ActionInterceptorHandler进行处理

类关系图

你可能感兴趣的:(Seata之SpringBootStarter模块分析)