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

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

如下 f1 和f2 属于同一个类

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

    }
    
   @Transactional
   public f2() {
        
      
  

    }

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

  1. 在同一类的非切面方法中获取代理对象,‌确保切面可以正常生效。‌
  2. 在不同类中,‌非事务方法调用事务方法时,‌确保事务生效。‌
  3. 在同一个类中,‌事务方法调用非事务方法时,‌事务仍然具有传播性,‌确保事务生效。‌
相关推荐
Dcs1 分钟前
从 C 到 Rust:一位开发者的 `tmux` 全面移植之旅
java
Maybyy19 分钟前
力扣242.有效的字母异位词
java·javascript·leetcode
←か淡定☆ ヾ30 分钟前
SQL Server 2008R2 到 2012 数据库迁移完整指南
数据库·sql server
瀚高PG实验室37 分钟前
Arcgis连接HGDB报错
数据库·arcgis·瀚高数据库
IT小辉同学1 小时前
PostgreSQL 与 MySQL 获取字段注释并转换为驼峰命名教程
数据库·mysql·postgresql
小小寂寞的城1 小时前
JAVA观察者模式demo【设计模式系列】
java·观察者模式·设计模式
xinghunzhiye20101 小时前
redis升级
数据库·redis·缓存
探索java2 小时前
Java并发编程中的StampedLock详解:原理、实践与性能优化
java·stampedlock
一只fish2 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(21)
数据库·mysql
涛思数据(TDengine)2 小时前
时序数据库 TDengine × SSRS:专为工业、能源场景打造的报表解决方案
大数据·数据库·物联网·时序数据库·tdengine