org.springframework.aop.aspectj.annotation

## 类 AnnotationAwareAspectJAutoProxyCreator

- 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.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator
          - - org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator

- 所有已实现的接口:
    Serializable, AopInfrastructureBean, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor, org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor, org.springframework.core.Ordered

      public class AnnotationAwareAspectJAutoProxyCreator
      extends AspectJAwareAdvisorAutoProxyCreator

  `AspectJAwareAdvisorAutoProxyCreator` subclass that processes all AspectJ annotation aspects in the current application context, as well as Spring Advisors.

  Any AspectJ annotated classes will automatically be recognized, and their advice applied if Spring AOP's proxy-based model is capable of applying it. This covers method execution joinpoints.

  If the <aop:include> element is used, only @AspectJ beans with names matched by an include pattern will be considered as defining aspects to use for Spring auto-proxying.

  Processing of Spring Advisors follows the rules established in `AbstractAdvisorAutoProxyCreator`.

  从以下版本开始:
    2.0
  作者:
    Rod Johnson, Juergen Hoeller
  另请参阅:
    `AspectJAdvisorFactory`, 序列化表格

- - ### 字段概要

    - ### 从类继承的字段 org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator

      `DO_NOT_PROXY, logger, PROXY_WITHOUT_ADDITIONAL_INTERCEPTORS`

    - ### 从接口继承的字段 org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### 构造器概要

    构造器
    构造器和说明
    `AnnotationAwareAspectJAutoProxyCreator()`

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected List<Advisor>` | `findCandidateAdvisors()` Find all candidate Advisors to use in auto-proxying.
    `protected void` | `initBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)`
    `protected boolean` | `isEligibleAspectBean(String beanName)` Check whether the given aspect bean is eligible for auto-proxying.
    `protected boolean` | `isInfrastructureClass(Class<?> beanClass)` 我aop功能中有进行了重写了父类的判断(事务没有重写)
    `void` | `setAspectJAdvisorFactory(AspectJAdvisorFactory aspectJAdvisorFactory)`
    `void` | `setIncludePatterns(List<String> patterns)` Set a list of regex patterns, matching eligible @AspectJ bean names.

    - ### 从类继承的方法 org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator

      `extendAdvisors, shouldSkip, sortAdvisors`

    - ### 从类继承的方法 org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator

      `advisorsPreFiltered, findAdvisorsThatCanApply, findEligibleAdvisors, getAdvicesAndAdvisorsForBean, isEligibleAdvisorBean, setBeanFactory`

    - ### 从类继承的方法 org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator

      `buildAdvisors, createProxy, customizeProxyFactory, determineCandidateConstructors, getBeanFactory, getCacheKey, getCustomTargetSource, getEarlyBeanReference, isFrozen, postProcessAfterInitialization, postProcessAfterInstantiation, postProcessBeforeInitialization, postProcessBeforeInstantiation, postProcessPropertyValues, predictBeanType, setAdvisorAdapterRegistry, setApplyCommonInterceptorsFirst, setCustomTargetSourceCreators, setFrozen, setInterceptorNames, shouldProxyTargetClass, wrapIfNecessary`

    - ### 从类继承的方法 org.springframework.aop.framework.ProxyProcessorSupport

      `evaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoader`

    - ### 从类继承的方法 org.springframework.aop.framework.ProxyConfig

      `copyFrom, isExposeProxy, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setOpaque, setOptimize, setProxyTargetClass, toString`

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### 构造器详细资料

    - #### AnnotationAwareAspectJAutoProxyCreator

          public AnnotationAwareAspectJAutoProxyCreator()

  - ### 方法详细资料

    - #### setIncludePatterns

          public void setIncludePatterns(List<String> patterns)

      Set a list of regex patterns, matching eligible @AspectJ bean names.

      Default is to consider all @AspectJ beans as eligible.

    - #### setAspectJAdvisorFactory

          public void setAspectJAdvisorFactory(AspectJAdvisorFactory aspectJAdvisorFactory)

    - #### initBeanFactory

          protected void initBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)

      覆盖:
        `initBeanFactory` 在类中 `AbstractAdvisorAutoProxyCreator`

    - #### findCandidateAdvisors

          protected List<Advisor> findCandidateAdvisors()

      从类复制的说明: `AbstractAdvisorAutoProxyCreator`
      Find all candidate Advisors to use in auto-proxying.
      覆盖:
        `findCandidateAdvisors` 在类中 `AbstractAdvisorAutoProxyCreator`
      返回:
        the List of candidate Advisors

    - #### isInfrastructureClass

          protected boolean isInfrastructureClass(Class<?> beanClass)

      我aop功能中有进行了重写了父类的判断(事务没有重写)
      覆盖:
        `isInfrastructureClass` 在类中 `AbstractAutoProxyCreator`
      参数:
        `beanClass` - the class of the bean
      返回:
      另请参阅:
        `Advice`, `Advisor`, `AopInfrastructureBean`, `AbstractAutoProxyCreator.shouldSkip(java.lang.Class<?>, java.lang.String)`

    - #### isEligibleAspectBean

          protected boolean isEligibleAspectBean(String beanName)

      Check whether the given aspect bean is eligible for auto-proxying.

      If no <aop:include> elements were used then "includePatterns" will be `null` and all beans are included. If "includePatterns" is non-null, then one of the patterns must match.