2

AspectJ のポイントカットでどのメソッドがカバーされているかを知ることは可能ですか?

この質問の背景は、すべてのメソッドをカバーするポイントカットがあることです(独自のものを除く):

pointcut traceMethods() : (execution(* *(..))&& !cflow(within(MethodTrace)));

アプリケーションが起動したら、ポイントカットの対象となるすべてのメソッドのメソッド シグネチャのリストを作成できるようにしたいと考えています。それは可能ですか?

4

1 に答える 1

0

あなたが望むもののために、以下は次のようになります:

pointcut traceMethods() : (execution(* *(..))&& !cflow(within(MethodTrace)));

before() : traceMethods()
{
     // Holds the signature the method intercepted by the pointcut traceMethods()
     String s = thisJoinPointStaticPart.getSignature().toString();  

     // do something with string 's'
}

詳細はこちら

AspectJは、使用するアドバイスのために現在のジョインポイントに関する反射情報を含む特別な参照変数thisJoinPointを提供します。thisJoinPoint変数は、アドバイスのコンテキストでのみ使用できます。これは、非静的メソッドと変数初期化子のコンテキストでのみ使用できるのと同じです。アドバイスとして、thisJoinPointはorg.aspectj.lang.JoinPointタイプのオブジェクトです。

于 2013-02-05T09:46:15.117 に答える