类 AbstractAdvisorAutoProxyCreator

所有已实现的接口:
AopInfrastructureBean, ProxyCreator, infra.beans.factory.Aware, infra.beans.factory.BeanClassLoaderAware, infra.beans.factory.BeanFactoryAware, infra.beans.factory.config.BeanPostProcessor, infra.beans.factory.config.InstantiationAwareBeanPostProcessor, infra.beans.factory.config.SmartInstantiationAwareBeanPostProcessor, infra.beans.factory.InitializationBeanPostProcessor, infra.core.Ordered, Serializable
直接已知子类:
AspectJAwareAdvisorAutoProxyCreator, DefaultAdvisorAutoProxyCreator, InfrastructureAdvisorAutoProxyCreator

public abstract class AbstractAdvisorAutoProxyCreator extends AbstractAutoProxyCreator
Generic auto proxy creator that builds AOP proxies for specific beans based on detected Advisors for each bean.

Subclasses may override the findCandidateAdvisors() method to return a custom 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 be annotated with @Order or implement the Ordered interface. This class sorts advisors using the AnnotationAwareOrderComparator. Advisors that are not annotated with @Order or don't implement the Ordered interface will be considered as unordered; they will appear at the end of the advisor chain in an undefined order.

从以下版本开始:
4.0
作者:
Rod Johnson, Juergen Hoeller, Harry Yang
另请参阅:
  • 字段详细资料

  • 构造器详细资料

    • AbstractAdvisorAutoProxyCreator

      public AbstractAdvisorAutoProxyCreator()
  • 方法详细资料

    • setBeanFactory

      public void setBeanFactory(infra.beans.factory.BeanFactory beanFactory)
      指定者:
      setBeanFactory 在接口中 infra.beans.factory.BeanFactoryAware
      覆盖:
      setBeanFactory 在类中 AbstractAutoProxyCreator
    • initBeanFactory

      protected void initBeanFactory(infra.beans.factory.config.ConfigurableBeanFactory beanFactory)
    • getAdvicesAndAdvisorsForBean

      @Nullable protected Object[] getAdvicesAndAdvisorsForBean(Class<?> beanClass, String beanName, @Nullable TargetSource targetSource)
      从类复制的说明: AbstractAutoProxyCreator
      Return whether the given bean is to be proxied, what additional advices (e.g. AOP Alliance interceptors) and advisors to apply.
      指定者:
      getAdvicesAndAdvisorsForBean 在类中 AbstractAutoProxyCreator
      参数:
      beanClass - the class of the bean to advise
      beanName - the name of the bean
      targetSource - 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.
      返回:
      an array of additional interceptors for the particular bean; or an empty array if no additional interceptors but just the common ones; or null if no proxy at all, not even with the common interceptors. See constants DO_NOT_PROXY and PROXY_WITHOUT_ADDITIONAL_INTERCEPTORS.
      另请参阅:
    • findEligibleAdvisors

      protected List<Advisor> findEligibleAdvisors(Class<?> beanClass, String beanName)
      Find all eligible Advisors for auto-proxying this class.
      参数:
      beanClass - the clazz to find advisors for
      beanName - the name of the currently proxied bean
      返回:
      the empty List, not null, if there are no pointcuts or interceptors
      另请参阅:
    • findCandidateAdvisors

      protected List<Advisor> findCandidateAdvisors()
      Find all candidate Advisors to use in auto-proxying.
      返回:
      the List of candidate Advisors
    • findAdvisorsThatCanApply

      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.
      参数:
      candidateAdvisors - the candidate Advisors
      beanClass - the target's bean class
      beanName - the target's bean name
      返回:
      the List of applicable Advisors
      另请参阅:
    • isEligibleAdvisorBean

      protected boolean isEligibleAdvisorBean(String beanName)
      Return whether the Advisor bean with the given name is eligible for proxying in the first place.
      参数:
      beanName - the name of the Advisor bean
      返回:
      whether the bean is eligible
    • sortAdvisors

      protected List<Advisor> sortAdvisors(List<Advisor> advisors)
      Sort advisors based on ordering. Subclasses may choose to override this method to customize the sorting strategy.
      参数:
      advisors - the source List of Advisors
      返回:
      the sorted List of Advisors
      另请参阅:
      • Ordered
      • Order
      • AnnotationAwareOrderComparator
    • extendAdvisors

      protected void extendAdvisors(List<Advisor> candidateAdvisors)
      Extension hook that subclasses can override to register additional Advisors, given the sorted Advisors obtained to date.

      The default implementation is empty.

      Typically used to add Advisors that expose contextual information required by some of the later advisors.

      参数:
      candidateAdvisors - the Advisors that have already been identified as applying to a given bean
    • advisorsPreFiltered

      protected boolean advisorsPreFiltered()
      This auto-proxy creator always returns pre-filtered Advisors.
      覆盖:
      advisorsPreFiltered 在类中 AbstractAutoProxyCreator
      返回:
      whether the Advisors are pre-filtered
      另请参阅: