public interface MethodMatcher
Pointcut
の一部: ターゲットメソッドがアドバイスの対象かどうかをチェックします。MethodMatcher は静的に、または実行時に (動的に)評価できます。静的マッチングには、メソッドおよび(場合によっては)メソッド属性が含まれます。動的マッチングでは、特定の呼び出しの引数、ジョインポイントに適用される以前のアドバイスの実行による影響も利用できます。
実装が isRuntime()
メソッドから false
を返す場合、評価は静的に実行でき、引数が何であっても、結果はこのメソッドのすべての呼び出しで同じになります。つまり、isRuntime()
メソッドが false
を返す場合、3 引数の matches(java.lang.reflect.Method, Class, Object[])
メソッドは呼び出されません。
実装が 2 引数の matches(java.lang.reflect.Method, Class)
メソッドから true
を返し、その isRuntime()
メソッドが true
を返す場合、3 引数の matches(java.lang.reflect.Method, Class, Object[])
メソッドは 、関連するアドバイスが実行される直前に呼び出され、アドバイスを実行するかどうかを決定します。インターセプターチェーンの以前のインターセプターなど、以前のすべてのアドバイスが実行されるため、パラメーターまたは ThreadLocal 状態で生成された状態変更は、評価時に利用できます。
このインターフェースの具象実装は、通常、マッチャーをキャッシングシナリオ(たとえば、CGLIB によって生成されるプロキシ)で使用できるようにするために、Object.equals(Object)
SE および Object.hashCode()
SE の適切な実装を提供する必要があります。
Pointcut
, ClassFilter
修飾子と型 | フィールドと説明 |
---|---|
static MethodMatcher | TRUE すべてのメソッドに一致する正規インスタンス。 |
修飾子と型 | メソッドと説明 |
---|---|
boolean | isRuntime() この MethodMatcher は動的ですか、つまり、2-arg matches メソッドが true を返す場合でも、実行時に matches(java.lang.reflect.Method, Class, Object[]) メソッドで最後の呼び出しを行う必要がありますか? |
boolean | matches(MethodSE method, ClassSE<?> targetClass) 指定されたメソッドが一致するかどうか静的チェックを実行します。 |
boolean | matches(MethodSE method, ClassSE<?> targetClass, ObjectSE... args) このメソッドに静的に一致している必要があるランタイム(動的)一致があるかどうかを確認します。 |
static final MethodMatcher TRUE
boolean matches(MethodSE method, ClassSE<?> targetClass)
これが false
を返す場合、または isRuntime()
メソッドが false
を返す場合、ランタイムチェックは行われません(つまり、matches(java.lang.reflect.Method, Class, Object[])
呼び出しは行われません)。
method
- 候補メソッド targetClass
- ターゲットクラス boolean isRuntime()
true
を返す場合でも、実行時に matches(java.lang.reflect.Method, Class, Object[])
メソッドで最後の呼び出しを行う必要がありますか? AOP プロキシの作成時に呼び出すことができ、各メソッド呼び出しの前に再度呼び出す必要はありません。
matches(java.lang.reflect.Method, Class, Object[])
メソッドによる実行時一致が必要かどうか boolean matches(MethodSE method, ClassSE<?> targetClass, ObjectSE... args)
このメソッドが呼び出されるのは、2-arg matches メソッドが特定のメソッドとターゲットクラスの true
を返し、isRuntime()
メソッドが true
を返す場合のみです。アドバイスが実行される可能性のある直前に呼び出され、after any アドバイスはアドバイスチェーンの前に実行されました。
method
- 候補メソッド targetClass
- ターゲットクラス args
- メソッドの引数 matches(Method, Class)