# 程序包org.springframework.aop.aspectj.annotation的分层结构

程序包分层结构:

- 所有程序包

## 类分层结构

- java.lang.Object
  - org.springframework.aop.aspectj.annotation.AbstractAspectJAdvisorFactory (implements org.springframework.aop.aspectj.annotation.AspectJAdvisorFactory)
    - org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory (implements java.io.Serializable)
  - org.springframework.aop.aspectj.annotation.AbstractAspectJAdvisorFactory.AspectJAnnotation<A>
  - org.springframework.aop.support.AbstractPointcutAdvisor (implements org.springframework.core.Ordered, org.springframework.aop.PointcutAdvisor, java.io.Serializable)
    - org.springframework.aop.support.AbstractGenericPointcutAdvisor
      - org.springframework.aop.support.DefaultPointcutAdvisor (implements java.io.Serializable)
        - org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory.SyntheticInstantiationAdvisor
  - org.springframework.aop.aspectj.annotation.AspectMetadata (implements java.io.Serializable)
  - org.springframework.aop.aspectj.annotation.BeanFactoryAspectInstanceFactory (implements org.springframework.aop.aspectj.annotation.MetadataAwareAspectInstanceFactory, java.io.Serializable)
    - org.springframework.aop.aspectj.annotation.PrototypeAspectInstanceFactory (implements java.io.Serializable)
  - org.springframework.aop.aspectj.annotation.BeanFactoryAspectJAdvisorsBuilder
  - org.springframework.aop.aspectj.annotation.LazySingletonAspectInstanceFactoryDecorator (implements org.springframework.aop.aspectj.annotation.MetadataAwareAspectInstanceFactory, java.io.Serializable)
  - org.springframework.aop.framework.ProxyConfig (implements java.io.Serializable)
    - org.springframework.aop.framework.AdvisedSupport (implements org.springframework.aop.framework.Advised)
      - org.springframework.aop.framework.ProxyCreatorSupport
        - org.springframework.aop.aspectj.annotation.AspectJProxyFactory
    - org.springframework.aop.framework.ProxyProcessorSupport (implements org.springframework.aop.framework.AopInfrastructureBean, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.core.Ordered)
      - org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator (implements org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor)
        - org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator
          - org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator
            - org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator
  - org.springframework.aop.aspectj.SimpleAspectInstanceFactory (implements org.springframework.aop.aspectj.AspectInstanceFactory)
    - org.springframework.aop.aspectj.annotation.SimpleMetadataAwareAspectInstanceFactory (implements org.springframework.aop.aspectj.annotation.MetadataAwareAspectInstanceFactory)
  - org.springframework.aop.aspectj.SingletonAspectInstanceFactory (implements org.springframework.aop.aspectj.AspectInstanceFactory, java.io.Serializable)
    - org.springframework.aop.aspectj.annotation.SingletonMetadataAwareAspectInstanceFactory (implements org.springframework.aop.aspectj.annotation.MetadataAwareAspectInstanceFactory, java.io.Serializable)
  - java.lang.Throwable (implements java.io.Serializable)
    - java.lang.Exception
      - java.lang.RuntimeException
        - org.springframework.core.NestedRuntimeException
          - org.springframework.aop.framework.AopConfigException
            - org.springframework.aop.aspectj.annotation.NotAnAtAspectException

## 接口分层结构

- org.springframework.aop.aspectj.annotation.AspectJAdvisorFactory
- org.springframework.core.Ordered
  - org.springframework.aop.aspectj.AspectInstanceFactory
    - org.springframework.aop.aspectj.annotation.MetadataAwareAspectInstanceFactory

## 枚举分层结构

- java.lang.Object
  - java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable)
    - org.springframework.aop.aspectj.annotation.AbstractAspectJAdvisorFactory.AspectJAnnotationType