Package org.springframework.aop.framework.autoproxy

# 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`, `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanClassLoaderAware`, `org.springframework.beans.factory.BeanFactoryAware`, `org.springframework.beans.factory.BeanNameAware`, `org.springframework.beans.factory.config.BeanPostProcessor`, `org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor`, `org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor`, `org.springframework.core.Ordered`

public class DefaultAdvisorAutoProxyCreator extends AbstractAdvisorAutoProxyCreator implements org.springframework.beans.factory.BeanNameAware
`BeanPostProcessor` implementation that creates AOP proxies based on all candidate `Advisor`s in the current `BeanFactory`. 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 the `advisorBeanNamePrefix` 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 final 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

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)`
Consider `Advisor` 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)`
`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, determineBeanType, determineCandidateConstructors, getBeanFactory, getCacheKey, getCustomTargetSource, getEarlyBeanReference, isFrozen, isInfrastructureClass, postProcessAfterInitialization, 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.BeanPostProcessor

`postProcessBeforeInitialization`

### Methods inherited from interface org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor

`postProcessAfterInstantiation`

## Field Details

### SEPARATOR

public static final String SEPARATOR
Separator between prefix and remainder of bean name.

See Also:
  - Constant Field Values

## Constructor Details

### DefaultAdvisorAutoProxyCreator

public DefaultAdvisorAutoProxyCreator()

## Method Details

### 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 type `Advisor`.

See Also:
  - `setAdvisorBeanNamePrefix(java.lang.String)`

### 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)

Specified by:
  `setBeanName` in interface `org.springframework.beans.factory.BeanNameAware`

### isEligibleAdvisorBean

protected boolean isEligibleAdvisorBean(String beanName)
Consider `Advisor` beans with the specified prefix as eligible, if activated.

Overrides:
  `isEligibleAdvisorBean` in class `AbstractAdvisorAutoProxyCreator`
Parameters:
  `beanName` - the name of the Advisor bean
Returns:
  whether the bean is eligible
See Also:
  - `setUsePrefix(boolean)`
  - `setAdvisorBeanNamePrefix(java.lang.String)`