3

我正在尝试向javax.persistence.EntityManagerAspectJ 和 Spring 提供建议。它只是不起作用:控制台上没有错误,也没有“捕获” ......

这是我的方面:

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"/>
4

1 回答 1

4

调用和执行的区别在于:

with callyou 建议您的代码,with executionyou 建议目标代码(在此上下文中,advising 大致意味着:更改字节码)。而且由于目标代码在您的编译器无法访问的 jar 中,因此这将不起作用。

usingcall在大多数情况下都可以,但是如果您绝对需要使用execution,则必须使用 aspectj 重新编译外部库或使用加载时间编织。

于 2012-08-02T14:37:05.137 回答