春季-建议使用AspectJ的javax.persistence.EntityManager不起作用

我正在尝试使用AspectJ和Spring建议javax.persistence.EntityManager.它只是行不通:没有错误,在控制台上也没有“抓到” …

这是我的方面:

package trc.suivi.aspects;

public aspect EventManagerAspect {

    public EventManagerAspect() {}

    pointcut catchIt() : (execution(* javax.persistence.EntityManager.persist(..)));

    after() returning: catchIt() {
        System.out.println("caught");
    }

}

这是我在Spring中配置方面的方式:

<bean class="trc.suivi.aspects.EventManagerAspect" factory-method="aspectOf"/>

解决方法:

调用和执行之间的区别是:

通过调用,您建议代码,在执行时,您建议目标代码(在这种情况下,大致建议是:更改其字节码).而且由于目标代码在jar中,您的编译器无法访问,所以这将无法工作.

在大多数情况下,使用call即可,但是如果您绝对需要使用执行,则必须使用Aspectj重新编译外部库,或者使用加载时编织.

上一篇:Linux top命令用法


下一篇:spring的@EnableAspectJAutoproxy注解