Class DefaultAdvisorAutoProxyCreator
- 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.framework.autoproxy.DefaultAdvisorAutoProxyCreator
- All Implemented Interfaces:
Serializable
,AopInfrastructureBean
,Aware
,BeanClassLoaderAware
,BeanFactoryAware
,BeanNameAware
,BeanPostProcessor
,InstantiationAwareBeanPostProcessor
,SmartInstantiationAwareBeanPostProcessor
,Ordered
public class DefaultAdvisorAutoProxyCreator extends AbstractAdvisorAutoProxyCreator implements BeanNameAware
BeanPostProcessor
implementation that creates AOP proxies based on all candidateAdvisor
s in the currentBeanFactory
. This class is completely generic; it contains no special code to handle any particular aspects, such as pooling aspects.It's possible to filter out advisors - for example, to use multiple post processors of this type in the same factory - by setting the
usePrefix
property to true, in which case only advisors beginning with the DefaultAdvisorAutoProxyCreator's bean name followed by a dot (like "aapc.") will be used. This default prefix can be changed from the bean name by setting theadvisorBeanNamePrefix
property. The separator (.) will also be used in this case.- Author:
- Rod Johnson, Rob Harrop
- See Also:
- Serialized Form
Field Summary
Fields Modifier and Type Field Description static String
SEPARATOR
Separator between prefix and remainder of bean name.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 DefaultAdvisorAutoProxyCreator()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description String
getAdvisorBeanNamePrefix()
Return the prefix for bean names that will cause them to be included for auto-proxying by this object.protected boolean
isEligibleAdvisorBean(String beanName)
ConsiderAdvisor
beans with the specified prefix as eligible, if activated.boolean
isUsePrefix()
Return whether to only include advisors with a certain prefix in the bean name.void
setAdvisorBeanNamePrefix(String advisorBeanNamePrefix)
Set the prefix for bean names that will cause them to be included for auto-proxying by this object.void
setBeanName(String name)
Set the name of the bean in the bean factory that created this bean.void
setUsePrefix(boolean usePrefix)
Set whether to only include advisors with a certain prefix in the bean name.Methods inherited from class org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator
advisorsPreFiltered, extendAdvisors, findAdvisorsThatCanApply, findCandidateAdvisors, findEligibleAdvisors, getAdvicesAndAdvisorsForBean, initBeanFactory, setBeanFactory, sortAdvisors
Methods inherited from class org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
buildAdvisors, createProxy, customizeProxyFactory, determineCandidateConstructors, getBeanFactory, getCacheKey, getCustomTargetSource, getEarlyBeanReference, isFrozen, isInfrastructureClass, postProcessAfterInitialization, postProcessAfterInstantiation, postProcessBeforeInitialization, postProcessBeforeInstantiation, postProcessProperties, predictBeanType, setAdvisorAdapterRegistry, setApplyCommonInterceptorsFirst, setCustomTargetSourceCreators, setFrozen, setInterceptorNames, shouldProxyTargetClass, shouldSkip, 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
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor
postProcessPropertyValues
Field Detail
SEPARATOR
public static final String SEPARATOR
Separator between prefix and remainder of bean name.- See Also:
- Constant Field Values
Constructor Detail
DefaultAdvisorAutoProxyCreator
public DefaultAdvisorAutoProxyCreator()
Method Detail
setUsePrefix
public void setUsePrefix(boolean usePrefix)
Set whether to only include advisors with a certain prefix in the bean name.Default is
false
, including all beans of typeAdvisor
.
isUsePrefix
public boolean isUsePrefix()
Return whether to only include advisors with a certain prefix in the bean name.
setAdvisorBeanNamePrefix
public void setAdvisorBeanNamePrefix(@Nullable String advisorBeanNamePrefix)
Set the prefix for bean names that will cause them to be included for auto-proxying by this object. This prefix should be set to avoid circular references. Default value is the bean name of this object + a dot.- Parameters:
advisorBeanNamePrefix
- the exclusion prefix
getAdvisorBeanNamePrefix
@Nullable public String getAdvisorBeanNamePrefix()
Return the prefix for bean names that will cause them to be included for auto-proxying by this object.
setBeanName
public void setBeanName(String name)
Description copied from interface:BeanNameAware
Set the name of the bean in the bean factory that created this bean.Invoked after population of normal bean properties but before an init callback such as
InitializingBean.afterPropertiesSet()
or a custom init-method.- Specified by:
setBeanName
in interfaceBeanNameAware
- Parameters:
name
- the name of the bean in the factory. Note that this name is the actual bean name used in the factory, which may differ from the originally specified name: in particular for inner bean names, the actual bean name might have been made unique through appending "#..." suffixes. Use theBeanFactoryUtils.originalBeanName(String)
method to extract the original bean name (without suffix), if desired.
isEligibleAdvisorBean
protected boolean isEligibleAdvisorBean(String beanName)
ConsiderAdvisor
beans with the specified prefix as eligible, if activated.- Overrides:
isEligibleAdvisorBean
in classAbstractAdvisorAutoProxyCreator
- Parameters:
beanName
- the name of the Advisor bean- Returns:
- whether the bean is eligible
- See Also:
setUsePrefix(boolean)
,setAdvisorBeanNamePrefix(java.lang.String)