建议javax.persistence.EntityManager与AspectJ无法正常工作

时间:2012-08-02 13:30:59

标签: spring aspectj 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"/>

1 个答案:

答案 0 :(得分:4)

电话和执行之间的区别是:

call你建议你的代码,execution你建议目标代码(在这种情况下,建议粗略意味着:更改字节代码)。由于目标代码在您的编译器无法访问的jar中,因此无法工作。

在大多数情况下使用call会有效,但如果您绝对需要使用execution,则必须使用aspectj重新编译外部库或使用加载时编织。