パッケージ org.springframework.aop

インターフェース MethodMatcher

すべての既知のサブインターフェース:
IntroductionAwareMethodMatcher
すべての既知の実装クラス:
AbstractRegexpMethodPointcutAnnotationMethodMatcherAspectJExpressionPointcutControlFlowPointcutDynamicMethodMatcherDynamicMethodMatcherPointcutJCacheOperationSourcePointcutJdkRegexpMethodPointcutNameMatchMethodPointcutStaticMethodMatcherStaticMethodMatcherPointcutStaticMethodMatcherPointcutAdvisor

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() の適切な実装を提供する必要があります。

導入:
11.11.2003
作成者:
Rod Johnson
関連事項:
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final MethodMatcher
    すべてのメソッドに一致する正規インスタンス。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    この 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)
    このメソッドに静的に一致している必要があるランタイム(動的)一致があるかどうかを確認します。
  • フィールドの詳細

    • TRUE

      static final MethodMatcher TRUE
      すべてのメソッドに一致する正規インスタンス。
  • メソッドの詳細

    • matches

      boolean matches(MethodSE method, ClassSE<?> targetClass)
      指定されたメソッドが一致するかどうか静的チェックを実行します。

      これが false を返す場合、または isRuntime() メソッドが false を返す場合、ランタイムチェックは行われません(つまり、matches(java.lang.reflect.Method, Class, Object[]) 呼び出しは行われません)。

      パラメーター:
      method - 候補メソッド
      targetClass - ターゲットクラス
      戻り値:
      このメソッドが静的に一致するかどうか
    • isRuntime

      boolean isRuntime()
      この MethodMatcher は動的ですか、つまり、2-arg matches メソッドが true を返す場合でも、実行時に matches(java.lang.reflect.Method, Class, Object[]) メソッドで最後の呼び出しを行う必要がありますか?

      AOP プロキシの作成時に呼び出すことができ、各メソッド呼び出しの前に再度呼び出す必要はありません。

      戻り値:
      静的マッチングに合格した場合、3 引数 matches(java.lang.reflect.Method, Class, Object[]) メソッドによるランタイムマッチングが必要かどうか
    • matches

      boolean matches(MethodSE method, ClassSE<?> targetClass, ObjectSE... args)
      このメソッドに静的に一致している必要があるランタイム(動的)一致があるかどうかを確認します。

      このメソッドが呼び出されるのは、2-arg matches メソッドが特定のメソッドとターゲットクラスの true を返し、isRuntime() メソッドが true を返す場合のみです。アドバイスが実行される可能性のある直前に呼び出され、after any アドバイスはアドバイスチェーンの前に実行されました。

      パラメーター:
      method - 候補メソッド
      targetClass - ターゲットクラス
      args - メソッドの引数
      戻り値:
      ランタイム一致があるかどうか
      関連事項: