3

単体テストまたはスタンドアロン アプリケーションから実行すると正常に動作する側面があります。ただし、Web アプリケーションの一部として実行し、Tomcat でホストすると、アスペクトは適用されません。

私の側面は次のように見えます

public class MyAspect {

    @Around("within(com.service..*)")
    public Object doLogging(ProceedingJoinPoint pjp) throws Throwable {
        //do something
        Object obj = pjp.proceed();
        //do something else
        return obj;
    }

}
4

3 に答える 3

3

私はこれを解決することができます。その理由は、アスペクトがグローバルアプリケーションコンテキストではなくWebアプリケーションコンテキストによって処理されていたため、いくつかのことを再構築する必要があるためです。ここで手順を詳しく説明しました

@seanizerSpringは内でサポートします。それはメソッドにのみ適用され、その中でcom.serviceのすべてのパッケージとサブパッケージのメソッドに適用されることは事実です。詳細については、こちらのリファレンスドキュメントを確認してください

于 2010-11-05T13:58:41.363 に答える
1

更新:あなたのケースでは役に立たなかったとしても、まだ部分的に有効であるため、これを残します。いくつかの場所を編集しますが、編集はthisまたはthisのようにマークされます。

Spring AOP を使用している場合は機能しません。Spring AOPはポイントカットのみを完全にサポートします。ポイントカットは、メソッドexecution実行に適用される場合にのみ機能します。完全に機能するには、 AspectJ が必要です (Spring AOP は一部の AspectJ ポイントカットのみを使用しますが、AspectJ ウィーバーは使用しません)。静的コンパイル (通常はMavenまたはAntを使用) またはLoad-Time-Weaving を使用します。withinwithin

また、クラスに@Aspect注釈がありません。

于 2010-11-05T09:04:32.593 に答える