在重构 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 逻辑的方法
得到了正确的结果。
不过我感觉这样很不方便,有没有更好的方法能解决这个问题呢?
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于