• GlobalTransactional


    seata-spring的maven坐标:

    <dependency>
      <groupId>io.seata</groupId>
      <artifactId>seata-spring</artifactId>
      <version>1.6.1</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    @GlobalTransactional注解的位置:

    io.seata.spring.annotation.GlobalTransactional
    
    • 1

    查看GlobalTransactional源码,注释显示:

    /**
     * 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
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    阅读注释,

    io.seata.spring.annotation.GlobalTransactionScanner#wrapIfNecessary(Object, String, Object)
    
    • 1

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

    io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction(MethodInvocation,AspectTransactional)
    
    • 1

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

    io.seata.spring.annotation.datasource.SeataAutoDataSourceProxyAdvice#invoke(MethodInvocation)
    
    • 1

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

    io.seata.spring.tcc.TccActionInterceptor#invoke(MethodInvocation)
    
    • 1

    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)
    
    • 1

    查看源码,注释显示:

    // todo

  • 相关阅读:
    react输入框输入的空格 样式 和输入后页面显示一致
    Redis 与 MySQL 一致性 实现方案
    JAVA项目点赞功能如何实现?如何利用缓存优化?如何防止刷赞?
    vue-json-editor
    如何快速的把m4a转换成mp3格式
    TypeScript入门与编译的配置
    TypeScript 高级类型-详解
    操作系统 | 进程调度/切换时机、内核临界区与普通临界区
    (74)MIPI DSI LLP介绍(十四)
    Duchefa丨S0188盐酸大观霉素五水合物中英文说明书
  • 原文地址:https://blog.csdn.net/weixin_36894490/article/details/133847088