一、背景
SpringBoot 项目,通过引入seata-spring-boot-starter
来接入 Seata,Seata 的能力会通过 SpringBoot 的自动装配机制来引入。在学习的时候是梳理有什么强大的、科技感十足的能力,但在试点的时候则更多考虑的是有哪些安保机制,比如通过什么开关来启停某某功能,以保护程序。今天就梳理有什么安保机制,划清能力边界,让使用者不必太过担心;生产中安全永远是第一的嘛。
二、认知拉齐-starter 中提供什么能力
第二部分若真不熟悉,看不懂可跳过进入第三部分。
Pom 依赖
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>${seata.version}</version>
</dependency>
复制代码
梳理自动装配类,直接从seata-spring-boot-starter
中找文件spring.factories
,其中有以下自动装配类:
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
io.seata.spring.boot.autoconfigure.SeataDataSourceAutoConfiguration,\
io.seata.spring.boot.autoconfigure.SeataAutoConfiguration,\
io.seata.spring.boot.autoconfigure.HttpAutoConfiguration,\
io.seata.spring.boot.autoconfigure.SeataSagaAutoConfiguration
复制代码
1) SeataDataSourceAutoConfiguration
Seata 的 AT 和 AX 模式是基于数据源代理实现的,SeataDataSourceAutoConfiguration
中自动对数据源做了代理,不用使用者手动实现代理。
2) SeataAutoConfiguration
- 构建全局事务扫描器
GlobalTransactionScanner
,注入到容器中,其内部做 2 件事情- 会初始化 TM、RM 客户端
- 扫描
Bean
,对添加了全局事务注解的类(@GlobalTransactional
、@Glo