Class ControlFlowPointcut
- All Implemented Interfaces:
- Serializable, ClassFilter, MethodMatcher, Pointcut
Each configured method name pattern can be an exact method name or a
pattern (see isMatch(String, String) for details on the supported
pattern styles).
Note that evaluating such pointcuts is 10-15 times slower than evaluating normal pointcuts, but they are useful in some cases.
- Author:
- Rod Johnson, Rob Harrop, Juergen Hoeller, Sam Brannen
- See Also:
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final Class<?> The class against which to match.An immutable list of distinct method name patterns against which to match.Fields inherited from interface ClassFilterTRUEFields inherited from interface MethodMatcherTRUE
- 
Constructor SummaryConstructorsConstructorDescriptionControlFlowPointcut(Class<?> clazz) Construct a new pointcut that matches all control flows below the given class.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.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.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.
- 
Method SummaryModifier and TypeMethodDescriptionbooleanReturn the ClassFilter for this pointcut.intGet the number of timesmatches(Method, Class, Object...)has been evaluated.Return the MethodMatcher for this pointcut.inthashCode()protected final voidIncrement theevaluation count.protected booleanDetermine if the given method name matches the method name pattern at the specified index.protected booleanDetermine if the given method name matches the method name pattern.booleanIs thisMethodMatcherdynamic, that is, must a final check be made via theMethodMatcher.matches(Method, Class, Object[])method at runtime even ifMethodMatcher.matches(Method, Class)returnstrue?booleanSubclasses can override this for greater filtering (and performance).booleanSubclasses can override this if it's possible to filter out some candidate classes.booleanCheck whether there is a runtime (dynamic) match for this method, which must have matched statically.toString()
- 
Field Details- 
clazz
- 
methodNamePatterns
 
- 
- 
Constructor Details- 
ControlFlowPointcutConstruct a new pointcut that matches all control flows below the given class.- Parameters:
- clazz- the class
 
- 
ControlFlowPointcutConstruct 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. - Parameters:
- clazz- the class
- methodNamePattern- the method name pattern (may be- null)
 
- 
ControlFlowPointcutConstruct 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. - Parameters:
- clazz- the class
- methodNamePatterns- the method name patterns (potentially empty)
- Since:
- 6.1
 
- 
ControlFlowPointcutConstruct 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. - Parameters:
- clazz- the class
- methodNamePatterns- the method name patterns (potentially empty)
- Since:
- 6.1
 
 
- 
- 
Method Details- 
matchesSubclasses can override this for greater filtering (and performance).The default implementation always returns true.- Specified by:
- matchesin interface- ClassFilter
- Parameters:
- clazz- the candidate target class
- Returns:
- whether the advice should apply to the given target class
 
- 
matchesSubclasses can override this if it's possible to filter out some candidate classes.The default implementation always returns true.- Specified by:
- matchesin interface- MethodMatcher
- Parameters:
- method- the candidate method
- targetClass- the target class
- Returns:
- whether this method matches statically
 
- 
isRuntimepublic boolean isRuntime()Description copied from interface:MethodMatcherIs thisMethodMatcherdynamic, that is, must a final check be made via theMethodMatcher.matches(Method, Class, Object[])method at runtime even ifMethodMatcher.matches(Method, Class)returnstrue?Can be invoked when an AOP proxy is created, and need not be invoked again before each method invocation. - Specified by:
- isRuntimein interface- MethodMatcher
- Returns:
- whether a runtime match via MethodMatcher.matches(Method, Class, Object[])is required if static matching passed
 
- 
matchesDescription copied from interface:MethodMatcherCheck whether there is a runtime (dynamic) match for this method, which must have matched statically.This method is invoked only if MethodMatcher.matches(Method, Class)returnstruefor the given method and target class, and ifMethodMatcher.isRuntime()returnstrue.Invoked immediately before potential running of the advice, after any advice earlier in the advice chain has run. - Specified by:
- matchesin interface- MethodMatcher
- Parameters:
- method- the candidate method
- targetClass- the target class
- args- arguments to the method
- Returns:
- whether there's a runtime match
- See Also:
 
- 
getEvaluationspublic int getEvaluations()Get the number of timesmatches(Method, Class, Object...)has been evaluated.Useful for optimization and testing purposes. 
- 
incrementEvaluationCountprotected final void incrementEvaluationCount()Increment theevaluation count.- Since:
- 6.1
- See Also:
 
- 
isMatchDetermine if the given method name matches the method name pattern at the specified index.This method is invoked by matches(Method, Class, Object...).The default implementation retrieves the method name pattern from methodNamePatternsand delegates toisMatch(String, String).Can be overridden in subclasses — for example, to support regular expressions. - Parameters:
- methodName- the method name to check
- patternIndex- the index of the method name pattern
- Returns:
- trueif the method name matches the pattern at the specified index
- Since:
- 6.1
- See Also:
 
- 
isMatchDetermine 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*, andxxx*yyymatches.Can be overridden in subclasses — for example, to support a different style of simple pattern matching. - Parameters:
- methodName- the method name to check
- methodNamePattern- the method name pattern
- Returns:
- trueif the method name matches the pattern
- Since:
- 6.1
- See Also:
 
- 
getClassFilterDescription copied from interface:PointcutReturn the ClassFilter for this pointcut.- Specified by:
- getClassFilterin interface- Pointcut
- Returns:
- the ClassFilter (never null)
 
- 
getMethodMatcherDescription copied from interface:PointcutReturn the MethodMatcher for this pointcut.- Specified by:
- getMethodMatcherin interface- Pointcut
- Returns:
- the MethodMatcher (never null)
 
- 
equals
- 
hashCode
- 
toString
 
-