开发者社区 问答 正文

seata 分布式事务不生效

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

展开
收起
一人吃饱,全家不饿 2021-02-02 11:08:48 7364 分享 版权
来自: 阿里开源
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 展开评论