public abstract class AbstractAdvisorAutoProxyCreator extends AbstractAutoProxyCreator
Subclasses must implement the abstract findCandidateAdvisors()
method to return a list of Advisors applying to any object. Subclasses can
also override the inherited AbstractAutoProxyCreator.shouldSkip(java.lang.Class<?>, java.lang.String) method to exclude certain
objects from auto-proxying.
Advisors or advices requiring ordering should implement the
Ordered interface. This class sorts
Advisors by Ordered order value. Advisors that don't implement the
Ordered interface will be considered as unordered; they will appear
at the end of the advisor chain in undefined order.
findCandidateAdvisors(),
Serialized FormDO_NOT_PROXY, logger, PROXY_WITHOUT_ADDITIONAL_INTERCEPTORS| Constructor and Description |
|---|
AbstractAdvisorAutoProxyCreator() |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
advisorsPreFiltered()
This auto-proxy creator always returns pre-filtered Advisors.
|
protected void |
extendAdvisors(List<Advisor> candidateAdvisors)
Extension hook that subclasses can override to register additional Advisors,
given the sorted Advisors obtained to date.
|
protected List<Advisor> |
findAdvisorsThatCanApply(List<Advisor> candidateAdvisors,
Class<?> beanClass,
String beanName)
Search the given candidate Advisors to find all Advisors that
can apply to the specified bean.
|
protected List<Advisor> |
findCandidateAdvisors()
Find all candidate Advisors to use in auto-proxying.
|
protected List<Advisor> |
findEligibleAdvisors(Class<?> beanClass,
String beanName)
Find all eligible Advisors for auto-proxying this class.
|
protected Object[] |
getAdvicesAndAdvisorsForBean(Class<?> beanClass,
String beanName,
TargetSource targetSource)
Return whether the given bean is to be proxied, what additional
advices (e.g.
|
protected void |
initBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) |
protected boolean |
isEligibleAdvisorBean(String beanName)
Return whether the Advisor bean with the given name is eligible
for proxying in the first place.
|
void |
setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) |
protected List<Advisor> |
sortAdvisors(List<Advisor> advisors)
Sort advisors based on ordering.
|
buildAdvisors, createProxy, customizeProxyFactory, determineCandidateConstructors, getBeanFactory, getCacheKey, getCustomTargetSource, getEarlyBeanReference, isFrozen, isInfrastructureClass, postProcessAfterInitialization, postProcessAfterInstantiation, postProcessBeforeInitialization, postProcessBeforeInstantiation, postProcessPropertyValues, predictBeanType, setAdvisorAdapterRegistry, setApplyCommonInterceptorsFirst, setCustomTargetSourceCreators, setFrozen, setInterceptorNames, shouldProxyTargetClass, shouldSkip, wrapIfNecessaryevaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoadercopyFrom, isExposeProxy, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setOpaque, setOptimize, setProxyTargetClass, toStringpublic void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAwaresetBeanFactory in class AbstractAutoProxyCreatorprotected void initBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
protected Object[] getAdvicesAndAdvisorsForBean(Class<?> beanClass, String beanName, TargetSource targetSource)
AbstractAutoProxyCreatorgetAdvicesAndAdvisorsForBean in class AbstractAutoProxyCreatorbeanClass - the class of the bean to advisebeanName - the name of the beantargetSource - the TargetSource returned by the
AbstractAutoProxyCreator.getCustomTargetSource(java.lang.Class<?>, java.lang.String) method: may be ignored.
Will be null if no custom target source is in use.null if no proxy at all, not even with the common interceptors.
See constants DO_NOT_PROXY and PROXY_WITHOUT_ADDITIONAL_INTERCEPTORS.AbstractAutoProxyCreator.DO_NOT_PROXY,
AbstractAutoProxyCreator.PROXY_WITHOUT_ADDITIONAL_INTERCEPTORSprotected List<Advisor> findEligibleAdvisors(Class<?> beanClass, String beanName)
beanClass - the clazz to find advisors forbeanName - the name of the currently proxied beannull,
if there are no pointcuts or interceptorsfindCandidateAdvisors(),
sortAdvisors(java.util.List<org.springframework.aop.Advisor>),
extendAdvisors(java.util.List<org.springframework.aop.Advisor>)protected List<Advisor> findCandidateAdvisors()
protected List<Advisor> findAdvisorsThatCanApply(List<Advisor> candidateAdvisors, Class<?> beanClass, String beanName)
candidateAdvisors - the candidate AdvisorsbeanClass - the target's bean classbeanName - the target's bean nameProxyCreationContext.getCurrentProxiedBeanName()protected boolean isEligibleAdvisorBean(String beanName)
beanName - the name of the Advisor beanprotected List<Advisor> sortAdvisors(List<Advisor> advisors)
advisors - the source List of AdvisorsOrdered,
Order,
AnnotationAwareOrderComparatorprotected void extendAdvisors(List<Advisor> candidateAdvisors)
The default implementation is empty.
Typically used to add Advisors that expose contextual information required by some of the later advisors.
candidateAdvisors - Advisors that have already been identified as
applying to a given beanprotected boolean advisorsPreFiltered()
advisorsPreFiltered in class AbstractAutoProxyCreatorAbstractAutoProxyCreator.getAdvicesAndAdvisorsForBean(java.lang.Class<?>, java.lang.String, org.springframework.aop.TargetSource),
Advised.setPreFiltered(boolean)