Package org.springframework.aop.support
Class ControlFlowPointcut
- java.lang.Object
- org.springframework.aop.support.ControlFlowPointcut
- All Implemented Interfaces:
Serializable,ClassFilter,MethodMatcher,Pointcut
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.- Author:
- Rod Johnson, Rob Harrop, Juergen Hoeller
- See Also:
- Serialized Form
Field Summary
Fields inherited from interface org.springframework.aop.ClassFilter
TRUE
Fields inherited from interface org.springframework.aop.MethodMatcher
TRUE
Constructor Summary
Constructors Constructor Description ControlFlowPointcut(Class<?> clazz)Construct a new pointcut that matches all control flows below that class.ControlFlowPointcut(Class<?> clazz, String methodName)Construct a new pointcut that matches all calls below the given method in the given class.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object other)ClassFiltergetClassFilter()Return the ClassFilter for this pointcut.intgetEvaluations()It's useful to know how many times we've fired, for optimization.MethodMatchergetMethodMatcher()Return the MethodMatcher for this pointcut.inthashCode()booleanisRuntime()Is this MethodMatcher dynamic, that is, must a final call be made on theMethodMatcher.matches(java.lang.reflect.Method, Class, Object[])method at runtime even if the 2-arg matches method returnstrue?booleanmatches(Class<?> clazz)Subclasses can override this for greater filtering (and performance).booleanmatches(Method method, Class<?> targetClass)Subclasses can override this if it's possible to filter out some candidate classes.booleanmatches(Method method, Class<?> targetClass, Object... args)Check whether there a runtime (dynamic) match for this method, which must have matched statically.
Constructor Detail
ControlFlowPointcut
public ControlFlowPointcut(Class<?> clazz)
Construct a new pointcut that matches all control flows below that class.- Parameters:
clazz- the clazz
ControlFlowPointcut
public ControlFlowPointcut(Class<?> clazz, String methodName)
Construct a new pointcut that matches all calls below the given method in the given class. If no method name is given, matches all control flows below the given class.- Parameters:
clazz- the clazzmethodName- the name of the method (may benull)
Method Detail
matches
public boolean matches(Class<?> clazz)
Subclasses can override this for greater filtering (and performance).- Specified by:
matchesin interfaceClassFilter- Parameters:
clazz- the candidate target class- Returns:
- 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.- Specified by:
matchesin interfaceMethodMatcher- Parameters:
method- the candidate methodtargetClass- the target class (may benull, in which case the candidate class must be taken to be the method's declaring class)- Returns:
- whether or not this method matches statically
isRuntime
public boolean isRuntime()
Description copied from interface:MethodMatcherIs this MethodMatcher dynamic, that is, must a final call be made on theMethodMatcher.matches(java.lang.reflect.Method, Class, Object[])method at runtime even if the 2-arg matches method returnstrue?Can be invoked when an AOP proxy is created, and need not be invoked again before each method invocation,
- Specified by:
isRuntimein interfaceMethodMatcher- Returns:
- whether or not a runtime match via the 3-arg
MethodMatcher.matches(java.lang.reflect.Method, Class, Object[])method is required if static matching passed
matches
public boolean matches(Method method, Class<?> targetClass, Object... args)
Description copied from interface:MethodMatcherCheck 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
truefor the given method and target class, and if theMethodMatcher.isRuntime()method returnstrue. Invoked immediately before potential running of the advice, after any advice earlier in the advice chain has run.- Specified by:
matchesin interfaceMethodMatcher- Parameters:
method- the candidate methodtargetClass- the target class (may benull, in which case the candidate class must be taken to be the method's declaring class)args- arguments to the method- Returns:
- whether there's a runtime match
- See Also:
MethodMatcher.matches(Method, Class)
getEvaluations
public int getEvaluations()
It's useful to know how many times we've fired, for optimization.
getClassFilter
public ClassFilter getClassFilter()
Description copied from interface:PointcutReturn the ClassFilter for this pointcut.- Specified by:
getClassFilterin interfacePointcut- Returns:
- the ClassFilter (never
null)
getMethodMatcher
public MethodMatcher getMethodMatcher()
Description copied from interface:PointcutReturn the MethodMatcher for this pointcut.- Specified by:
getMethodMatcherin interfacePointcut- Returns:
- the MethodMatcher (never
null)