クラス ControlFlowPointcut

java.lang.ObjectSE
org.springframework.aop.support.ControlFlowPointcut
実装されたすべてのインターフェース:
SerializableSEClassFilterMethodMatcherPointcut

public class ControlFlowPointcut extends ObjectSE implements Pointcut, ClassFilter, MethodMatcher, SerializableSE
単純な cflow -style ポイントカットとして使用するためのポイントカットおよびメソッドマッチャー。

構成された各メソッド名パターンは、正確なメソッド名またはパターンにすることができます (サポートされているパターンスタイルの詳細については、isMatch(String, String) を参照してください)。

このようなポイントカットの評価は、通常のポイントカットの評価よりも 10-15 倍遅くなりますが、場合によっては役立つことに注意してください。

作成者:
Rod Johnson, Rob Harrop, Juergen Hoeller, Sam Brannen
関連事項:
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected final ClassSE<?>
    照合するクラス。
    protected final ListSE<StringSE>
    照合する個別のメソッド名パターンの不変のリスト。

    インターフェース org.springframework.aop.ClassFilter から継承されたフィールド

    TRUE

    インターフェース org.springframework.aop.MethodMatcher から継承されたフィールド

    TRUE

    インターフェース org.springframework.aop.Pointcut から継承されたフィールド

    TRUE
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
    指定されたクラスのすべての制御フローに一致する新しいポイントカットを構築します。
    ControlFlowPointcut(ClassSE<?> clazz, StringSE methodNamePattern)
    指定されたクラスの指定されたメソッド名パターンに一致するメソッドのすべての呼び出しに一致する新しいポイントカットを構築します。
    ControlFlowPointcut(ClassSE<?> clazz, StringSE... methodNamePatterns)
    指定されたクラスの指定されたメソッド名パターンの 1 つに一致するメソッドのすべての呼び出しに一致する新しいポイントカットを構築します。
    ControlFlowPointcut(ClassSE<?> clazz, ListSE<StringSE> methodNamePatterns)
    指定されたクラスの指定されたメソッド名パターンの 1 つに一致するメソッドのすべての呼び出しに一致する新しいポイントカットを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    このポイントカットの ClassFilter を返します。
    int
    matches(Method, Class, Object...) が評価された回数を取得します。
    このポイントカットの MethodMatcher を返します。
    int
    protected final void
    evaluation count をインクリメントします。
    protected boolean
    isMatch(StringSE methodName, int patternIndex)
    指定されたメソッド名が、指定されたインデックスのメソッド名パターンと一致するかどうかを確認します。
    protected boolean
    isMatch(StringSE methodName, StringSE methodNamePattern)
    指定されたメソッド名がメソッド名パターンと一致するかどうかを確認します。
    boolean
    これは MethodMatcher 動的ですか ? つまり、MethodMatcher.matches(Method, Class) が true を返した場合でも、実行時に MethodMatcher.matches(Method, Class, Object[]) メソッドを介して最終チェックを行う必要がありますか ?
    boolean
    matches(ClassSE<?> clazz)
    サブクラスはこれをオーバーライドして、フィルタリング(およびパフォーマンス)を向上させることができます。
    boolean
    matches(MethodSE method, ClassSE<?> targetClass)
    一部の候補クラスを除外することが可能な場合、サブクラスはこれをオーバーライドできます。
    boolean
    matches(MethodSE method, ClassSE<?> targetClass, ObjectSE... args)
    このメソッドに実行時 (動的) 一致があるかどうかを確認します (静的に一致している必要があります)。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, waitSE, waitSE
  • フィールドの詳細

    • clazz

      protected final ClassSE<?> clazz
      照合するクラス。
      導入:
      6.1
    • methodNamePatterns

      protected final ListSE<StringSE> methodNamePatterns
      照合する個別のメソッド名パターンの不変のリスト。
      導入:
      6.1
  • コンストラクターの詳細

    • ControlFlowPointcut

      public ControlFlowPointcut(ClassSE<?> clazz)
      指定されたクラスのすべての制御フローに一致する新しいポイントカットを構築します。
      パラメーター:
      clazz - クラス
    • ControlFlowPointcut

      public ControlFlowPointcut(ClassSE<?> clazz, @Nullable StringSE methodNamePattern)
      指定されたクラスの指定されたメソッド名パターンに一致するメソッドのすべての呼び出しに一致する新しいポイントカットを構築します。

      メソッド名パターンが指定されていない場合、ポイントカットは指定されたクラスのすべての制御フローと一致します。

      パラメーター:
      clazz - クラス
      methodNamePattern - メソッド名のパターン (null の場合があります)
    • ControlFlowPointcut

      public ControlFlowPointcut(ClassSE<?> clazz, StringSE... methodNamePatterns)
      指定されたクラスの指定されたメソッド名パターンの 1 つに一致するメソッドのすべての呼び出しに一致する新しいポイントカットを構築します。

      メソッド名パターンが指定されていない場合、ポイントカットは指定されたクラスのすべての制御フローと一致します。

      パラメーター:
      clazz - クラス
      methodNamePatterns - メソッド名のパターン (潜在的に空)
      導入:
      6.1
    • ControlFlowPointcut

      public ControlFlowPointcut(ClassSE<?> clazz, ListSE<StringSE> methodNamePatterns)
      指定されたクラスの指定されたメソッド名パターンの 1 つに一致するメソッドのすべての呼び出しに一致する新しいポイントカットを構築します。

      メソッド名パターンが指定されていない場合、ポイントカットは指定されたクラスのすべての制御フローと一致します。

      パラメーター:
      clazz - クラス
      methodNamePatterns - メソッド名のパターン (潜在的に空)
      導入:
      6.1
  • メソッドの詳細

    • matches

      public boolean matches(ClassSE<?> clazz)
      サブクラスはこれをオーバーライドして、フィルタリング(およびパフォーマンス)を向上させることができます。

      デフォルトの実装は、常に true を返します。

      次で指定:
      インターフェース ClassFiltermatches 
      パラメーター:
      clazz - 候補ターゲットクラス
      戻り値:
      アドバイスが与えられたターゲットクラスに適用されるべきかどうか
    • matches

      public boolean matches(MethodSE method, ClassSE<?> targetClass)
      一部の候補クラスを除外することが可能な場合、サブクラスはこれをオーバーライドできます。

      デフォルトの実装は、常に true を返します。

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

      public boolean isRuntime()
      インターフェースからコピーされた説明: MethodMatcher
      これは MethodMatcher 動的ですか ? つまり、MethodMatcher.matches(Method, Class) が true を返した場合でも、実行時に MethodMatcher.matches(Method, Class, Object[]) メソッドを介して最終チェックを行う必要がありますか ?

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

      次で指定:
      インターフェース MethodMatcherisRuntime 
      戻り値:
      静的マッチングが成功した場合に、MethodMatcher.matches(Method, Class, Object[]) によるランタイムマッチングが必要かどうか
    • matches

      public boolean matches(MethodSE method, ClassSE<?> targetClass, ObjectSE... args)
      インターフェースからコピーされた説明: MethodMatcher
      このメソッドに実行時 (動的) 一致があるかどうかを確認します (静的に一致している必要があります)。

      このメソッドは、指定されたメソッドとターゲットクラスに対して MethodMatcher.matches(Method, Class) が true を返す場合、および MethodMatcher.isRuntime() が true を返す場合にのみ呼び出されます。

      アドバイスが実行される可能性がある直前に呼び出されます。after any アドバイス は、アドバイスの中で先に チェーン が実行されています。

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

      public int getEvaluations()
      matches(Method, Class, Object...) が評価された回数を取得します。

      最適化とテストの目的に役立ちます。

    • incrementEvaluationCount

      protected final void incrementEvaluationCount()
      evaluation count をインクリメントします。
      導入:
      6.1
      関連事項:
    • isMatch

      protected boolean isMatch(StringSE methodName, int patternIndex)
      指定されたメソッド名が、指定されたインデックスのメソッド名パターンと一致するかどうかを確認します。

      このメソッドは matches(Method, Class, Object...) によって呼び出されます。

      デフォルトの実装では、メソッド名パターンを methodNamePatterns から取得し、isMatch(String, String) に委譲します。

      サブクラスでオーバーライドできます。たとえば、正規表現をサポートするためです。

      パラメーター:
      methodName - 確認するメソッド名
      patternIndex - メソッド名パターンのインデックス
      戻り値:
      true メソッド名が指定されたインデックスのパターンと一致する場合
      導入:
      6.1
      関連事項:
    • isMatch

      protected boolean isMatch(StringSE methodName, StringSE methodNamePattern)
      指定されたメソッド名がメソッド名パターンと一致するかどうかを確認します。

      このメソッドは isMatch(String, int) によって呼び出されます。

      デフォルトの実装では、直接の等価性と xxx**xxx*xxx*xxx*yyy の一致がチェックされます。

      サブクラスでオーバーライドできます。たとえば、別のスタイルの単純なパターンマッチングをサポートします。

      パラメーター:
      methodName - 確認するメソッド名
      methodNamePattern - メソッド名のパターン
      戻り値:
      メソッド名がパターンと一致する場合は true 
      導入:
      6.1
      関連事項:
    • getClassFilter

      public ClassFilter getClassFilter()
      インターフェースからコピーされた説明: Pointcut
      このポイントカットの ClassFilter を返します。
      次で指定:
      インターフェース PointcutgetClassFilter 
      戻り値:
      ClassFilter (非 null)
    • getMethodMatcher

      public MethodMatcher getMethodMatcher()
      インターフェースからコピーされた説明: Pointcut
      このポイントカットの MethodMatcher を返します。
      次で指定:
      インターフェース PointcutgetMethodMatcher 
      戻り値:
      MethodMatcher (非 null)
    • equals

      public boolean equals(@Nullable ObjectSE other)
      オーバーライド:
      クラス ObjectSEequalsSE 
    • hashCode

      public int hashCode()
      オーバーライド:
      クラス ObjectSEhashCode 
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString