Class AspectJAwareAdvisorAutoProxyCreator
- java.lang.Object
- org.springframework.aop.framework.ProxyConfig
- org.springframework.aop.framework.ProxyProcessorSupport
- org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
- org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator
- org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator
- All Implemented Interfaces:
Serializable,AopInfrastructureBean,Aware,BeanClassLoaderAware,BeanFactoryAware,BeanPostProcessor,InstantiationAwareBeanPostProcessor,SmartInstantiationAwareBeanPostProcessor,Ordered
- Direct Known Subclasses:
AnnotationAwareAspectJAutoProxyCreator
public class AspectJAwareAdvisorAutoProxyCreator extends AbstractAdvisorAutoProxyCreator
AbstractAdvisorAutoProxyCreatorsubclass that exposes AspectJ's invocation context and understands AspectJ's rules for advice precedence when multiple pieces of advice come from the same aspect.- Since:
- 2.0
- Author:
- Adrian Colyer, Juergen Hoeller, Ramnivas Laddad
- See Also:
- Serialized Form
Field Summary
Fields inherited from class org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
DO_NOT_PROXY, logger, PROXY_WITHOUT_ADDITIONAL_INTERCEPTORS
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor Summary
Constructors Constructor Description AspectJAwareAdvisorAutoProxyCreator()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidextendAdvisors(List<Advisor> candidateAdvisors)Adds anExposeInvocationInterceptorto the beginning of the advice chain.protected booleanshouldSkip(Class<?> beanClass, String beanName)Subclasses should override this method to returntrueif the given bean should not be considered for auto-proxying by this post-processor.protected List<Advisor>sortAdvisors(List<Advisor> advisors)Sort the rest by AspectJ precedence.Methods inherited from class org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator
advisorsPreFiltered, findAdvisorsThatCanApply, findCandidateAdvisors, findEligibleAdvisors, getAdvicesAndAdvisorsForBean, initBeanFactory, isEligibleAdvisorBean, setBeanFactory
Methods inherited from class org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
buildAdvisors, createProxy, customizeProxyFactory, determineCandidateConstructors, getBeanFactory, getCacheKey, getCustomTargetSource, getEarlyBeanReference, isFrozen, isInfrastructureClass, postProcessAfterInitialization, postProcessAfterInstantiation, postProcessBeforeInitialization, postProcessBeforeInstantiation, postProcessPropertyValues, predictBeanType, setAdvisorAdapterRegistry, setApplyCommonInterceptorsFirst, setCustomTargetSourceCreators, setFrozen, setInterceptorNames, shouldProxyTargetClass, wrapIfNecessary
Methods inherited from class org.springframework.aop.framework.ProxyProcessorSupport
evaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoader
Methods inherited from class org.springframework.aop.framework.ProxyConfig
copyFrom, isExposeProxy, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setOpaque, setOptimize, setProxyTargetClass, toString
Constructor Detail
AspectJAwareAdvisorAutoProxyCreator
public AspectJAwareAdvisorAutoProxyCreator()
Method Detail
sortAdvisors
protected List<Advisor> sortAdvisors(List<Advisor> advisors)
Sort the rest by AspectJ precedence. If two pieces of advice have come from the same aspect they will have the same order. Advice from the same aspect is then further ordered according to the following rules:- if either of the pair is after advice, then the advice declared last gets highest precedence (runs last)
- otherwise the advice declared first gets highest precedence (runs first)
Important: Advisors are sorted in precedence order, from highest precedence to lowest. "On the way in" to a join point, the highest precedence advisor should run first. "On the way out" of a join point, the highest precedence advisor should run last.
- Overrides:
sortAdvisorsin classAbstractAdvisorAutoProxyCreator- Parameters:
advisors- the source List of Advisors- Returns:
- the sorted List of Advisors
- See Also:
Ordered,Order,AnnotationAwareOrderComparator
extendAdvisors
protected void extendAdvisors(List<Advisor> candidateAdvisors)
Adds anExposeInvocationInterceptorto the beginning of the advice chain. These additional advices are needed when using AspectJ expression pointcuts and when using AspectJ-style advice.- Overrides:
extendAdvisorsin classAbstractAdvisorAutoProxyCreator- Parameters:
candidateAdvisors- the Advisors that have already been identified as applying to a given bean
shouldSkip
protected boolean shouldSkip(Class<?> beanClass, String beanName)
Description copied from class:AbstractAutoProxyCreatorSubclasses should override this method to returntrueif the given bean should not be considered for auto-proxying by this post-processor.Sometimes we need to be able to avoid this happening if it will lead to a circular reference. This implementation returns
false.- Overrides:
shouldSkipin classAbstractAutoProxyCreator- Parameters:
beanClass- the class of the beanbeanName- the name of the bean- Returns:
- whether to skip the given bean