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

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

如下 f1 和f2 属于同一个类

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

    }
    
   @Transactional
   public f2() {
        
      
  

    }

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

  1. 在同一类的非切面方法中获取代理对象,‌确保切面可以正常生效。‌
  2. 在不同类中,‌非事务方法调用事务方法时,‌确保事务生效。‌
  3. 在同一个类中,‌事务方法调用非事务方法时,‌事务仍然具有传播性,‌确保事务生效。‌
相关推荐
TDengine (老段)1 分钟前
TDengine IDMP 组态面板 —— 锚点
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
我是苏苏5 分钟前
消息中间件RabbitMQ04:路由模式+死信队列的应用实践模板
java·开发语言
Navicat中国7 分钟前
Navicat 模式设计全解:解决数据库开发 3 大核心痛点
数据库·数据库开发·navicat·模式设计
花无缺0007 分钟前
Java开发踩坑:一次线上性能优化案例
java·开发语言·人工智能·面试
yashuk10 分钟前
SpringBoot中自定义Starter
java·spring boot·后端
一只大袋鼠11 分钟前
并发编程(二十三):单例模式(二):静态/非静态方法:单例内存优化关键
java·单例模式·并发编程
oradh12 分钟前
Oracle 19c 单机安装总结_linux8
数据库·oracle·oracle 19c·oracle安装
瀚高PG实验室13 分钟前
瀚高数据库使用IPv6连接的配置方法
数据库·瀚高数据库
pupudawang13 分钟前
mysql之联合索引
数据库·mysql
刘晨鑫114 分钟前
MySQL的初步认识和安装
数据库·mysql