事务在类内部方法调用中的应用

 类A里的不带事务的b方法,调用类A里的带事务的c方法,则方法c不会以事务的方式的执行

public class ClassA{

    public void b(){
       c();
    }

    @Transactional
    public void c(){
       insert();
    }
}

 

如果想类内部方法调用可以正常使用事务,使用AopContext.currentProxy()来获取代理类再调用, 

1,在spring配置文件中添加,

2,在b方法里面调用代理

   public void b(){
      ClassA a = (ClassA)AopContext.currentProxy()  ;
      a.c();   //注意方法c一定要用public修饰,否则无法访问
   }

 

注意:方法c一定要用public修饰,否则会报错:can not find proxy: set exposeproxy property on advised to make it available

你可能感兴趣的:(开发生涯中遇到的问题)