我试图用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"/>
答案 0 :(得分:4)
电话和执行之间的区别是:
call
你建议你的代码,execution
你建议目标代码(在这种情况下,建议粗略意味着:更改字节代码)。由于目标代码在您的编译器无法访问的jar中,因此无法工作。
在大多数情况下使用call
会有效,但如果您绝对需要使用execution
,则必须使用aspectj重新编译外部库或使用加载时编织。