GlobalTransactional

seata-spring的maven坐标:

java 复制代码
<dependency>
  <groupId>io.seata</groupId>
  <artifactId>seata-spring</artifactId>
  <version>1.6.1</version>
</dependency>

@GlobalTransactional注解的位置:

java 复制代码
io.seata.spring.annotation.GlobalTransactional

查看GlobalTransactional源码,注释显示:

java 复制代码
/**
 * The interface Global transactional.
 *
 * @author slievrly
 * @see io.seata.spring.annotation.GlobalTransactionScanner#wrapIfNecessary(Object, String, Object) io.seata.spring
 * .annotation.GlobalTransactionScanner#wrapIfNecessary(Object, String, Object)// the scanner for TM, GlobalLock, and
 * TCC mode
 * @see io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction(MethodInvocation,
 * AspectTransactional) io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction
 * (MethodInvocation,
 * GlobalTransactional)// TM: the interceptor of TM
 * @see io.seata.spring.annotation.datasource.SeataAutoDataSourceProxyAdvice#invoke(MethodInvocation) io.seata.spring
 * .annotation.datasource.SeataAutoDataSourceProxyAdvice#invoke(MethodInvocation)// RM: the interceptor of
 * GlobalLockLogic and AT/XA mode
 * @see io.seata.spring.tcc.TccActionInterceptor#invoke(MethodInvocation) io.seata.spring.tcc
 * .TccActionInterceptor#invoke(MethodInvocation)// RM: the interceptor of TCC mode
 */

阅读注释,

java 复制代码
io.seata.spring.annotation.GlobalTransactionScanner#wrapIfNecessary(Object, String, Object)

wrapIfNecessary(Object, String, Object)方法,是 TM、GlobalLock和 TCC 模式的扫描仪。

java 复制代码
io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction(MethodInvocation,AspectTransactional)

handleGlobalTransaction(MethodInvocation,GlobalTransactional)这个方法,是TM侧的TM的拦截器。

java 复制代码
io.seata.spring.annotation.datasource.SeataAutoDataSourceProxyAdvice#invoke(MethodInvocation)

SeataAutoDataSourceProxyAdvice#invoke(MethodInvocation),是RM侧的GlobalLockLogic和AT/XA模式的拦截器。

java 复制代码
io.seata.spring.tcc.TccActionInterceptor#invoke(MethodInvocation)

TccActionInterceptor#invoke(MethodInvocation),是RM侧的TCC模式的拦截器。

TM是什么?RM是什么?看看seata术语表。

TM是事务管理器,定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM是资源管理器,管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

简称 中文名称 功能
TC (Transaction Coordinator) 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM (Transaction Manager) 事务管理器 定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM (Resource Manager) 资源管理器 管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

GlobalTransactionScanner#wrapIfNecessary,查看扫描仪的方法。

wrapIfNecessary(Object, String, Object)方法位置:

复制代码
io.seata.spring.annotation.GlobalTransactionScanner#wrapIfNecessary(Object, String, Object)

查看源码,注释显示:

// todo

相关推荐
矛取矛求1 小时前
C++ 标准库参考手册深度解析
java·开发语言·c++
cijiancao1 小时前
23 种设计模式中的解释器模式
java·设计模式·解释器模式
南七行者1 小时前
对模板方法模式的理解
java·设计模式·模板方法
麻芝汤圆1 小时前
MapReduce 的广泛应用:从数据处理到智能决策
java·开发语言·前端·hadoop·后端·servlet·mapreduce
努力的搬砖人.1 小时前
java如何实现一个秒杀系统(原理)
java·经验分享·后端·面试
哈哈哈哈哈哈哈哈哈...........1 小时前
【java】在 Java 中,获取一个类的`Class`对象有多种方式
java·开发语言·python
fallwind_of_july1 小时前
java项目分享-分布式电商项目附软件链接
java·redis·分布式·mongodb·elasticsearch·微服务·rabbitmq
武昌库里写JAVA2 小时前
Golang的消息中间件选型
java·开发语言·spring boot·学习·课程设计
工一木子2 小时前
大厂算法面试 7 天冲刺:第6天-树与图深度剖析——高频算法面试题 & Java 实战
java·算法·面试
振鹏Dong2 小时前
字符串——面试考察高频算法题
java·数据结构·算法