public class AspectJAwareAdvisorAutoProxyCreator extends AbstractAdvisorAutoProxyCreator
AbstractAdvisorAutoProxyCreator
subclass that exposes AspectJ's invocation context and understands AspectJ's rules
for advice precedence when multiple pieces of advice come from the same aspect.DO_NOT_PROXY, logger, PROXY_WITHOUT_ADDITIONAL_INTERCEPTORS
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor and Description |
---|
AspectJAwareAdvisorAutoProxyCreator() |
Modifier and Type | Method and Description |
---|---|
protected void |
extendAdvisors(List<Advisor> candidateAdvisors)
Adds an
ExposeInvocationInterceptor to the beginning of the advice chain. |
protected boolean |
shouldSkip(Class<?> beanClass,
String beanName)
Subclasses should override this method to return
true if 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.
|
advisorsPreFiltered, findAdvisorsThatCanApply, findCandidateAdvisors, findEligibleAdvisors, getAdvicesAndAdvisorsForBean, initBeanFactory, isEligibleAdvisorBean, setBeanFactory
buildAdvisors, createProxy, customizeProxyFactory, determineCandidateConstructors, getBeanFactory, getCacheKey, getCustomTargetSource, getEarlyBeanReference, getOrder, isFrozen, isInfrastructureClass, postProcessAfterInitialization, postProcessAfterInstantiation, postProcessBeforeInitialization, postProcessBeforeInstantiation, postProcessPropertyValues, predictBeanType, setAdvisorAdapterRegistry, setApplyCommonInterceptorsFirst, setBeanClassLoader, setCustomTargetSourceCreators, setFrozen, setInterceptorNames, setOrder, setProxyClassLoader, shouldProxyTargetClass, wrapIfNecessary
copyFrom, isExposeProxy, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setOpaque, setOptimize, setProxyTargetClass, toString
protected List<Advisor> sortAdvisors(List<Advisor> advisors)
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.
sortAdvisors
in class AbstractAdvisorAutoProxyCreator
advisors
- the source List of AdvisorsOrdered
,
OrderComparator
protected void extendAdvisors(List<Advisor> candidateAdvisors)
ExposeInvocationInterceptor
to the beginning of the advice chain.
These additional advices are needed when using AspectJ expression pointcuts
and when using AspectJ-style advice.extendAdvisors
in class AbstractAdvisorAutoProxyCreator
candidateAdvisors
- Advisors that have already been identified as
applying to a given beanprotected boolean shouldSkip(Class<?> beanClass, String beanName)
AbstractAutoProxyCreator
true
if 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
.
shouldSkip
in class AbstractAutoProxyCreator
beanClass
- the class of the beanbeanName
- the name of the bean