在重构MOC的过程中遇到了一个问题。
在Service中定义了一个方法A并将这个方法作为AOP切面,然后在Service中的其他方法里调用该方法A,发现AOP逻辑没有顺利执行。
就是在同类中调用带有AOP逻辑的方法,则那个方法的AOP逻辑会不被调用。
后来经过查阅资料,发现这样调用,调用的不是代理类的方法,所以AOP逻辑自然不会执行
那我们只要想办法,调用代理类的方法就可以了。
bean.xml内加入:

<aop:aspectj-autoproxy proxy-target-class="true" expose-proxy="true"/> 

在我的业务逻辑代码内,这样调用:

((MediaWriterService)AopContext.currentProxy()).changeInfo(writer, media, values);

其中MediaWriterService是我的类名
changeInfo(..)是带有AOP逻辑的方法

得到了正确的结果。
不过我感觉这样很不方便,有没有更好的方法能解决这个问题呢?

添加新评论