spring 同类方法调用事务失效解决办法

可以使用AopContext.currentProxy()获取到当前类的代理对象,然后再用代理对象进行调用本类中的方法

如下 f1 和f2 属于同一个类

复制代码
    public voidf1() {
        
        ((本类名)AopContext.currentProxy()).f2();
      
  

    }
    
   @Transactional
   public f2() {
        
      
  

    }

AopContext.currentProxy()方法的使用场景还包括:‌

  1. 在同一类的非切面方法中获取代理对象,‌确保切面可以正常生效。‌
  2. 在不同类中,‌非事务方法调用事务方法时,‌确保事务生效。‌
  3. 在同一个类中,‌事务方法调用非事务方法时,‌事务仍然具有传播性,‌确保事务生效。‌
相关推荐
wregjru13 分钟前
【读书笔记】Effective C++ 条款5~6:若不想使用编译器自动生成的函数,就该明确拒绝
java·开发语言
华科易迅16 分钟前
SQL学习
java·sql·学习
语戚17 分钟前
从 JVM 底层拆解:i++、++i、i+=1、i=i+1 的实现逻辑与坑点
java·开发语言·jvm·面试·自增·指令·虚拟机
StackNoOverflow21 分钟前
Spring核心知识精讲:IoC容器、Bean作用域生命周期与AOP(第二部分)
java·后端·spring
数据知道22 分钟前
MongoDB分片集群部署:详细生产环境完整搭建
数据库·mongodb
bropro23 分钟前
MySQL不使用子查询的原因
android·数据库·mysql
野生技术架构师24 分钟前
Java面试精选:数据库 + 数据结构 +JVM+ 网络 +JAVA+ 分布式
java·数据库·面试
枫叶丹29 分钟前
复杂SQL性能突围:代价驱动的连接条件下推策略与工程实践
数据库
fengye20716131 分钟前
MongoDB 安装与配置
数据库·mongodb
银河麒麟操作系统32 分钟前
银河麒麟服务器操作系统IO机制详解
数据库·redis·缓存