类 ControlFlowPointcut

java.lang.Object
infra.aop.support.ControlFlowPointcut
所有已实现的接口:
ClassFilter, MethodMatcher, Pointcut, Serializable

public class ControlFlowPointcut extends Object implements Pointcut, ClassFilter, MethodMatcher, Serializable
Pointcut and method matcher for use in simple cflow-style pointcut. Note that evaluating such pointcuts is 10-15 times slower than evaluating normal pointcuts, but they are useful in some cases.
从以下版本开始:
4.0 2022/3/9 23:01
作者:
Rod Johnson, Rob Harrop, Juergen Hoeller, Sam Brannen, Harry Yang
另请参阅:
  • 字段详细资料

    • clazz

      protected final Class<?> clazz
      The class against which to match.
    • methodNamePatterns

      protected final List<String> methodNamePatterns
      An immutable list of distinct method name patterns against which to match.
    • evaluationCount

      private final AtomicInteger evaluationCount
  • 构造器详细资料

    • ControlFlowPointcut

      public ControlFlowPointcut(Class<?> clazz)
      Construct a new pointcut that matches all control flows below the given class.
      参数:
      clazz - the class
    • ControlFlowPointcut

      public ControlFlowPointcut(Class<?> clazz, @Nullable String methodNamePattern)
      Construct a new pointcut that matches all calls below a method matching the given method name pattern in the given class.

      If no method name pattern is given, the pointcut matches all control flows below the given class.

      参数:
      clazz - the class
      methodNamePattern - the method name pattern (may be null)
    • ControlFlowPointcut

      public ControlFlowPointcut(Class<?> clazz, String... methodNamePatterns)
      Construct a new pointcut that matches all calls below a method matching one of the given method name patterns in the given class.

      If no method name pattern is given, the pointcut matches all control flows below the given class.

      参数:
      clazz - the class
      methodNamePatterns - the method name patterns (potentially empty)
    • ControlFlowPointcut

      public ControlFlowPointcut(Class<?> clazz, List<String> methodNamePatterns)
      Construct a new pointcut that matches all calls below a method matching one of the given method name patterns in the given class.

      If no method name pattern is given, the pointcut matches all control flows below the given class.

      参数:
      clazz - the class
      methodNamePatterns - the method name patterns (potentially empty)
  • 方法详细资料

    • matches

      public boolean matches(Class<?> clazz)
      Subclasses can override this for greater filtering (and performance).

      The default implementation always returns true.

      指定者:
      matches 在接口中 ClassFilter
      参数:
      clazz - the candidate target class
      返回:
      whether the advice should apply to the given target class
    • matches

      public boolean matches(Method method, Class<?> targetClass)
      Subclasses can override this if it's possible to filter out some candidate classes.

      The default implementation always returns true.

      指定者:
      matches 在接口中 MethodMatcher
      参数:
      method - the candidate method
      targetClass - the target class
      返回:
      whether or not this method matches on application startup.
    • isRuntime

      public boolean isRuntime()
      从接口复制的说明: MethodMatcher
      Is this MethodMatcher dynamic, that is, must a final call be made on the MethodMatcher.matches(MethodInvocation) method at runtime even if the 2-arg matches method returns true?

      Can be invoked when an AOP proxy is created, and need not be invoked again before each method invocation,

      指定者:
      isRuntime 在接口中 MethodMatcher
      返回:
      whether or not a runtime match via the 1-arg MethodMatcher.matches(MethodInvocation) method is required if static matching passed
    • matches

      public boolean matches(MethodInvocation invocation)
      从接口复制的说明: MethodMatcher
      Check whether there a runtime (dynamic) match for this method, which must have matched statically.

      This method is invoked only if the 2-arg matches method returns true for the given method and target class, and if the MethodMatcher.isRuntime() method returns true. Invoked immediately before potential running of the advice, after any advice earlier in the advice chain has run.

      指定者:
      matches 在接口中 MethodMatcher
      参数:
      invocation - runtime invocation contains the candidate method and target class, arguments to the method
      返回:
      whether there's a runtime match
      另请参阅:
    • getEvaluations

      public int getEvaluations()
      Get the number of times matches(MethodInvocation) has been evaluated.

      Useful for optimization and testing purposes.

    • incrementEvaluationCount

      protected final void incrementEvaluationCount()
      Increment the evaluation count.
      另请参阅:
    • isMatch

      protected boolean isMatch(String methodName, int patternIndex)
      Determine if the given method name matches the method name pattern at the specified index.

      This method is invoked by matches(MethodInvocation).

      The default implementation retrieves the method name pattern from methodNamePatterns and delegates to isMatch(String, String).

      Can be overridden in subclasses — for example, to support regular expressions.

      参数:
      methodName - the method name to check
      patternIndex - the index of the method name pattern
      返回:
      true if the method name matches the pattern at the specified index
      另请参阅:
    • isMatch

      protected boolean isMatch(String methodName, String methodNamePattern)
      Determine if the given method name matches the method name pattern.

      This method is invoked by isMatch(String, int).

      The default implementation checks for direct equality as well as xxx*, *xxx, *xxx*, and xxx*yyy matches.

      Can be overridden in subclasses — for example, to support a different style of simple pattern matching.

      参数:
      methodName - the method name to check
      methodNamePattern - the method name pattern
      返回:
      true if the method name matches the pattern
      另请参阅:
    • getClassFilter

      public ClassFilter getClassFilter()
      从接口复制的说明: Pointcut
      Return the ClassFilter for this pointcut.
      指定者:
      getClassFilter 在接口中 Pointcut
      返回:
      the ClassFilter (never null)
    • getMethodMatcher

      public MethodMatcher getMethodMatcher()
      从接口复制的说明: Pointcut
      Return the MethodMatcher for this pointcut.
      指定者:
      getMethodMatcher 在接口中 Pointcut
      返回:
      the MethodMatcher (never null)
    • equals

      public boolean equals(@Nullable Object other)
      覆盖:
      equals 在类中 Object
    • hashCode

      public int hashCode()
      覆盖:
      hashCode 在类中 Object
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object