インターフェース MethodMatcher
- すべての既知のサブインターフェース:
IntroductionAwareMethodMatcher
- すべての既知の実装クラス:
AbstractRegexpMethodPointcut
、AnnotationMethodMatcher
、AspectJExpressionPointcut
、ControlFlowPointcut
、DynamicMethodMatcher
、DynamicMethodMatcherPointcut
、JCacheOperationSourcePointcut
、JdkRegexpMethodPointcut
、NameMatchMethodPointcut
、StaticMethodMatcher
、StaticMethodMatcherPointcut
、StaticMethodMatcherPointcutAdvisor
Pointcut
の一部: ターゲットメソッドがアドバイスの対象かどうかをチェックします。MethodMatcher
は静的に評価することも、 実行時 (動的に) 評価することもできます。静的マッチングには、メソッドと (場合によっては) メソッド属性が含まれます。動的マッチングにより、特定の呼び出しの引数が使用可能になり、以前のアドバイスを実行した結果がジョインポイントに適用されます。
実装が isRuntime()
メソッドから false
を返す場合、評価は静的に実行でき、引数が何であっても、結果はこのメソッドのすべての呼び出しで同じになります。つまり、isRuntime()
メソッドが false
を返す場合、3 引数の matches(Method, Class, Object[])
メソッドは呼び出されません。
実装が 2 引数の matches(Method, Class)
メソッドから true
を返し、その isRuntime()
メソッドが true
を返す場合、 関連するアドバイスが実行される可能性があるたびに、そのアドバイスを実行するかどうかを決定するために、3 引数の matches(Method, Class, Object[])
メソッドが直前に呼び出されます。インターセプターチェーン内の以前のインターセプターなど、以前のアドバイスはすべて実行されているため、パラメーターまたは ThreadLocal
状態で生成された状態変更は評価時に利用可能になります。
警告 : キャッシュシナリオでマッチャーを使用できるようにするには、このインターフェースの具体的な実装で Object.equals(Object)
SE、Object.hashCode()
、Object.toString()
の適切な実装を提供する必要があります。たとえば、CGLIB によって生成されたプロキシ内です。Spring Framework 6.0.13 以降、toString()
実装は、equals()
の実装に使用されるロジックと一致する一意の文字列表現を生成する必要があります。例については、フレームワーク内でのこのインターフェースの具体的な実装を参照してください。
- 導入:
- 11.11.2003
- 作成者:
- Rod Johnson, Sam Brannen
- 関連事項:
フィールドのサマリー
フィールドメソッドのサマリー
修飾子と型メソッド説明boolean
これはMethodMatcher
動的ですか ? つまり、matches(Method, Class)
がtrue
を返した場合でも、実行時にmatches(Method, Class, Object[])
メソッドを介して最終チェックを行う必要がありますか ?boolean
静的チェックを実行して、指定されたメソッドが一致するかどうかを判断します。boolean
このメソッドに実行時 (動的) 一致があるかどうかを確認します (静的に一致している必要があります)。
フィールドの詳細
TRUE
すべてのメソッドに一致するMethodMatcher
の正規インスタンス。
メソッドの詳細
matches
静的チェックを実行して、指定されたメソッドが一致するかどうかを判断します。このメソッドが
false
を返す場合、またはisRuntime()
がfalse
を返す場合、実行時チェックは行われません (つまり、matches(Method, Class, Object[])
呼び出しは行われません)。- パラメーター:
method
- 候補メソッドtargetClass
- ターゲットクラス- 戻り値:
- このメソッドが静的に一致するかどうか
isRuntime
boolean isRuntime()これはMethodMatcher
動的ですか ? つまり、matches(Method, Class)
がtrue
を返した場合でも、実行時にmatches(Method, Class, Object[])
メソッドを介して最終チェックを行う必要がありますか ?AOP プロキシの作成時に呼び出すことができ、各メソッドを呼び出す前に再度呼び出す必要はありません。
- 戻り値:
- 静的マッチングが成功した場合に、
matches(Method, Class, Object[])
によるランタイムマッチングが必要かどうか
matches
このメソッドに実行時 (動的) 一致があるかどうかを確認します (静的に一致している必要があります)。このメソッドは、指定されたメソッドとターゲットクラスに対して
matches(Method, Class)
がtrue
を返す場合、およびisRuntime()
がtrue
を返す場合にのみ呼び出されます。アドバイスが実行される可能性がある直前に呼び出されます。after any アドバイスは、アドバイスの中で先に チェーンが実行されています。
- パラメーター:
method
- 候補メソッドtargetClass
- ターゲットクラスargs
- メソッドの引数- 戻り値:
- ランタイム一致があるかどうか
- 関連事項: