org.springframework.aop.framework.autoproxy

## Class DefaultAdvisorAutoProxyCreator

- java.lang.Object
- - org.springframework.aop.framework.ProxyConfig
  - - 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 candidate Advisors 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 and 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 and Description
    `DefaultAdvisorAutoProxyCreator()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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 exclude 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 exclude 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, getOrder, isConfigurationCallbackInterface, isFrozen, isInfrastructureClass, postProcessAfterInitialization, postProcessAfterInstantiation, postProcessBeforeInitialization, postProcessBeforeInstantiation, postProcessPropertyValues, predictBeanType, setAdvisorAdapterRegistry, setApplyCommonInterceptorsFirst, setBeanClassLoader, setCustomTargetSourceCreators, setFrozen, setInterceptorNames, setOrder, setProxyClassLoader, shouldProxyTargetClass, shouldSkip, wrapIfNecessary`

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

- - ### 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 exclude advisors with a certain prefix in the bean name.

    - #### isUsePrefix

          public boolean isUsePrefix()

      Return whether to exclude advisors with a certain prefix in the bean name.

    - #### setAdvisorBeanNamePrefix

          public void setAdvisorBeanNamePrefix(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

          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 interface `BeanNameAware`
      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 the `BeanFactoryUtils.originalBeanName(String)` method to extract the original bean name (without suffix), if desired.

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