开发者社区> 问答> 正文

seata 分布式事务不生效

请问@GlobalTransactional是否支持嵌套,在调试过程中发现一个类A,下有两个 public的方法 m1、m2,m1方法调用了m2,@GlobalTransactional注解标识在m2上,GlobalTransactionalInterceptor拦截代理的访问为m1,而不是m2,导致获取不到注解对象,最终使分布式事务不生效

展开
收起
一人吃饱,全家不饿 2021-02-02 11:08:48 7313 0
来自:阿里开源
2 条回答
写回答
取消 提交回答
  • 使用seata 控制分布式事务时 要让seata空时 数据源吗?

    2021-10-25 21:16:16
    赞同 展开评论 打赏
  • 这个是最常见的springAOP不生效的一个坑,应该要这样写。

    @ Service
    public class Service1 {
      @ Autowired
      private Service1 self;
    
      public void m1() {
          //this.m2(); // 类内部直接调用,不会触发AOP
          self.m2();
      }
    
      @ GlobalTransactional
      publiv void m2() {
      }
    }
    
    2021-02-02 11:08:54
    赞同 1 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
阿里巴巴相信开源的世界里人人贡献代码,人人获得收益,共同创造一个互帮互利的社区,促进技术进步和发展。
问答排行榜
最热
最新

相关电子书

更多
《Seata 1.3 新特性以及如何参与社区》 立即下载
PolarDB分布式版架构介绍 立即下载
workshop专场-微服务专场-开发者动手实践营-Fescar 在微服务架构下分布式一致性的实践 立即下载