Aop失效的场景以及解决办法

Aop失效的场景:

 

在同一个方法中方法互相调用,例如GoodServicce的a()方法调用了本类中的b()方法,Aop就会失效,同时被调用的b()方法的事务也失效,如下:

 

 

 解决办法(一),拿到Spring给我们创建的代理,用代理调用就可以解决,解决如下:

 

 

 解决办法(二),把我们要进行调用的方法移出本类,比如到一个公共的Service,然后注入公共Service的对象,再使用其进行调用:

1、新建公共Service

 

 

 

 

 

 2、注入对象再进行调用

 

3、注入自己类型的代理对象

@Service
public class OrderServiceImpl implements OrderService {
    @Autowired
    private OrderService orderService;
    
    public List<Order> findAll(){
        orderService.noAop(); // 使用代理对象调用,不会使AOP失效
    }

    public void noAop(){
        // 逻辑代码
    }        
}

 

 

 

 至此,就解决了。

posted @ 2020-05-13 10:30  koooin  阅读(3220)  评论(1编辑  收藏  举报