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 are advisoring your code, with executionyou are advising the target code (このコンテキストでは、アドバイスとは大まかに言って、バイトコードを変更することを意味します)。また、ターゲット コードはコンパイラがアクセスできない jar 内にあるため、これは機能しません。

callほとんどの場合は を使用しますが、絶対に を使用する必要がある場合は、executionaspectj を使用して外部ライブラリを再コンパイルするか、ロード タイム ウィービングを使用する必要があります。

于 2012-08-02T14:37:05.137 に答える