以AT为例,我们使用Seata时只需要在全局事务的方法上加上@GlobalTransactional,就开启了全局事务的支持。那么Seata的底层到底是怎么实现的呢?
首先我们知道,Seata也是一个SpringBoot项目,如果对Seata源码无从下手,那么不妨从Spring切入:
GlobalTransactionScanner
在Seata中有一个重要的bean组件:GlobalTranscationScanner,它是用来扫描被标注了 @GlobalTransactional
, @GlobalLock
注解的方法或类的。
GlobalTranscationScanner,全局事务扫描器,它继承了 AbstractAutoProxyCreator
, InitializingBean
, ApplicationContextAware
, DisposableBean
接口。这四个都是spring的类,所以想要知道这个GlobalTransactionScanner做了什么工作,我们首先得介绍一下spring知识:
- AbstractAutoProxyCreator: 是spring的AOP的一个核心类。