例如,A中的方法a使用Spring AOP插入了一些功能(例如使用声明式事务):
@Transactional(rollbackFor = Exception.class) public void a() { …… …… }
在其他类中调用a方法时,一切正常。但A内部的其他方法调用a方法时,会发现Spring AOP并没有起作用,插入的功能无效了。
解决方法比较简单粗暴,在A内部调用a方法时,获取A的代理对象,然后调用这个代理对象的a方法即可,像这样:
((A) AopContext.currentProxy()).a();