Class AspectJExpressionPointcut
- java.lang.Object
- org.springframework.aop.support.AbstractExpressionPointcut
- org.springframework.aop.aspectj.AspectJExpressionPointcut
- All Implemented Interfaces:
Serializable,ClassFilter,IntroductionAwareMethodMatcher,MethodMatcher,Pointcut,ExpressionPointcut,Aware,BeanFactoryAware
public class AspectJExpressionPointcut extends AbstractExpressionPointcut implements ClassFilter, IntroductionAwareMethodMatcher, BeanFactoryAware
SpringPointcutimplementation that uses the AspectJ weaver to evaluate a pointcut expression.The pointcut expression value is an AspectJ expression. This can reference other pointcuts and use composition and other operations.
Naturally, as this is to be processed by Spring AOP's proxy-based model, only method execution pointcuts are supported.
- Since:
- 2.0
- Author:
- Rob Harrop, Adrian Colyer, Rod Johnson, Juergen Hoeller, Ramnivas Laddad, Dave Syer
- 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 AspectJExpressionPointcut()Create a new default AspectJExpressionPointcut.AspectJExpressionPointcut(Class<?> declarationScope, String[] paramNames, Class<?>[] paramTypes)Create a new AspectJExpressionPointcut with the given settings.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object other)ClassFiltergetClassFilter()Return the ClassFilter for this pointcut.protected StringgetCurrentProxiedBeanName()MethodMatchergetMethodMatcher()Return the MethodMatcher for this pointcut.org.aspectj.weaver.tools.PointcutExpressiongetPointcutExpression()Return the underlying AspectJ pointcut expression.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<?> targetClass)Should the pointcut apply to the given interface or target class?booleanmatches(Method method, Class<?> targetClass)Perform static checking whether the given method matches.booleanmatches(Method method, Class<?> targetClass, boolean beanHasIntroductions)Perform static checking whether the given method matches.booleanmatches(Method method, Class<?> targetClass, Object... args)Check whether there a runtime (dynamic) match for this method, which must have matched statically.voidsetBeanFactory(BeanFactory beanFactory)Callback that supplies the owning factory to a bean instance.voidsetParameterNames(String... names)Set the parameter names for the pointcut.voidsetParameterTypes(Class<?>... types)Set the parameter types for the pointcut.voidsetPointcutDeclarationScope(Class<?> pointcutDeclarationScope)Set the declaration scope for the pointcut.StringtoString()Methods inherited from class org.springframework.aop.support.AbstractExpressionPointcut
getExpression, getLocation, onSetExpression, setExpression, setLocation
Constructor Detail
AspectJExpressionPointcut
public AspectJExpressionPointcut()
Create a new default AspectJExpressionPointcut.
AspectJExpressionPointcut
public AspectJExpressionPointcut(Class<?> declarationScope, String[] paramNames, Class<?>[] paramTypes)
Create a new AspectJExpressionPointcut with the given settings.- Parameters:
declarationScope- the declaration scope for the pointcutparamNames- the parameter names for the pointcutparamTypes- the parameter types for the pointcut
Method Detail
setPointcutDeclarationScope
public void setPointcutDeclarationScope(Class<?> pointcutDeclarationScope)
Set the declaration scope for the pointcut.
setParameterNames
public void setParameterNames(String... names)
Set the parameter names for the pointcut.
setParameterTypes
public void setParameterTypes(Class<?>... types)
Set the parameter types for the pointcut.
setBeanFactory
public void setBeanFactory(BeanFactory beanFactory)
Description copied from interface:BeanFactoryAwareCallback that supplies the owning factory to a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean.afterPropertiesSet()or a custom init-method.- Specified by:
setBeanFactoryin interfaceBeanFactoryAware- Parameters:
beanFactory- owning BeanFactory (nevernull). The bean can immediately call methods on the factory.- See Also:
BeanInitializationException
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)
getPointcutExpression
public org.aspectj.weaver.tools.PointcutExpression getPointcutExpression()
Return the underlying AspectJ pointcut expression.
matches
public boolean matches(Class<?> targetClass)
Description copied from interface:ClassFilterShould the pointcut apply to the given interface or target class?- Specified by:
matchesin interfaceClassFilter- Parameters:
targetClass- the candidate target class- Returns:
- whether the advice should apply to the given target class
matches
public boolean matches(Method method, Class<?> targetClass, boolean beanHasIntroductions)
Description copied from interface:IntroductionAwareMethodMatcherPerform static checking whether the given method matches. This may be invoked instead of the 2-argMethodMatcher.matches(java.lang.reflect.Method, Class)method if the caller supports the extended IntroductionAwareMethodMatcher interface.- Specified by:
matchesin interfaceIntroductionAwareMethodMatcher- 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)beanHasIntroductions-trueif the object on whose behalf we are asking is the subject on one or more introductions;falseotherwise- Returns:
- whether or not this method matches statically
matches
public boolean matches(Method method, Class<?> targetClass)
Description copied from interface:MethodMatcherPerform static checking whether the given method matches.If this returns
falseor if theMethodMatcher.isRuntime()method returnsfalse, no runtime check (i.e. noMethodMatcher.matches(java.lang.reflect.Method, Class, Object[])call) will be made.- 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)
getCurrentProxiedBeanName
protected String getCurrentProxiedBeanName()