在重构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逻辑的方法

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

    ****

    Thanks for Reading

    Jiahao.Zhang
    NetEase Inc. Hangzhou 
            Front-End Developer