# 所有程序包的分层结构

程序包分层结构:

- org.aopalliance.aop,
- org.aopalliance.intercept,
- org.springframework.aop,
- org.springframework.aop.aspectj,
- org.springframework.aop.aspectj.annotation,
- org.springframework.aop.aspectj.autoproxy,
- org.springframework.aop.config,
- org.springframework.aop.framework,
- org.springframework.aop.framework.adapter,
- org.springframework.aop.framework.autoproxy,
- org.springframework.aop.framework.autoproxy.target,
- org.springframework.aop.interceptor,
- org.springframework.aop.scope,
- org.springframework.aop.support,
- org.springframework.aop.support.annotation,
- org.springframework.aop.target,
- org.springframework.aop.target.dynamic

## 类分层结构

- java.lang.Object
  - org.springframework.aop.aspectj.AbstractAspectJAdvice (implements org.aopalliance.aop.Advice, org.springframework.aop.aspectj.AspectJPrecedenceInformation, java.io.Serializable)
    - org.springframework.aop.aspectj.AspectJAfterAdvice (implements org.springframework.aop.AfterAdvice, org.aopalliance.intercept.MethodInterceptor, java.io.Serializable)
    - org.springframework.aop.aspectj.AspectJAfterReturningAdvice (implements org.springframework.aop.AfterAdvice, org.springframework.aop.AfterReturningAdvice, java.io.Serializable)
    - org.springframework.aop.aspectj.AspectJAfterThrowingAdvice (implements org.springframework.aop.AfterAdvice, org.aopalliance.intercept.MethodInterceptor, java.io.Serializable)
    - org.springframework.aop.aspectj.AspectJAroundAdvice (implements org.aopalliance.intercept.MethodInterceptor, java.io.Serializable)
    - org.springframework.aop.aspectj.AspectJMethodBeforeAdvice (implements org.springframework.aop.MethodBeforeAdvice, java.io.Serializable)
  - 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.target.AbstractBeanFactoryBasedTargetSource (implements org.springframework.beans.factory.BeanFactoryAware, java.io.Serializable, org.springframework.aop.TargetSource)
    - org.springframework.aop.target.AbstractPrototypeBasedTargetSource
      - org.springframework.aop.target.AbstractPoolingTargetSource (implements org.springframework.beans.factory.DisposableBean, org.springframework.aop.target.PoolingConfig)
        - org.springframework.aop.target.CommonsPool2TargetSource (implements org.apache.commons.pool2.PooledObjectFactory<T>)
      - org.springframework.aop.target.PrototypeTargetSource
      - org.springframework.aop.target.ThreadLocalTargetSource (implements org.springframework.beans.factory.DisposableBean, org.springframework.aop.target.ThreadLocalTargetSourceStats)
    - org.springframework.aop.target.LazyInitTargetSource
    - org.springframework.aop.target.SimpleBeanTargetSource
  - org.springframework.aop.framework.autoproxy.target.AbstractBeanFactoryBasedTargetSourceCreator (implements org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.DisposableBean, org.springframework.aop.framework.autoproxy.TargetSourceCreator)
    - org.springframework.aop.framework.autoproxy.target.LazyInitTargetSourceCreator
    - org.springframework.aop.framework.autoproxy.target.QuickTargetSourceCreator
  - org.springframework.beans.factory.parsing.AbstractComponentDefinition (implements org.springframework.beans.factory.parsing.ComponentDefinition)
    - org.springframework.aop.config.AdvisorComponentDefinition
    - org.springframework.beans.factory.parsing.CompositeComponentDefinition
      - org.springframework.aop.config.AspectComponentDefinition
    - org.springframework.aop.config.PointcutComponentDefinition
  - org.springframework.aop.support.AbstractExpressionPointcut (implements org.springframework.aop.support.ExpressionPointcut, java.io.Serializable)
    - org.springframework.aop.aspectj.AspectJExpressionPointcut (implements org.springframework.beans.factory.BeanFactoryAware, org.springframework.aop.ClassFilter, org.springframework.aop.IntroductionAwareMethodMatcher)
  - org.springframework.aop.config.AbstractInterceptorDrivenBeanDefinitionDecorator (implements org.springframework.beans.factory.xml.BeanDefinitionDecorator)
  - org.springframework.aop.target.AbstractLazyCreationTargetSource (implements org.springframework.aop.TargetSource)
  - org.springframework.aop.support.AbstractPointcutAdvisor (implements org.springframework.core.Ordered, org.springframework.aop.PointcutAdvisor, java.io.Serializable)
    - org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor (implements org.springframework.beans.factory.BeanFactoryAware)
      - org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor
    - org.springframework.aop.support.AbstractGenericPointcutAdvisor
      - org.springframework.aop.aspectj.AspectJExpressionPointcutAdvisor (implements org.springframework.beans.factory.BeanFactoryAware)
      - org.springframework.aop.support.DefaultPointcutAdvisor (implements java.io.Serializable)
        - org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory.SyntheticInstantiationAdvisor
      - org.springframework.aop.support.NameMatchMethodPointcutAdvisor
      - org.springframework.aop.support.RegexpMethodPointcutAdvisor
  - org.springframework.aop.target.dynamic.AbstractRefreshableTargetSource (implements org.springframework.aop.target.dynamic.Refreshable, org.springframework.aop.TargetSource)
    - org.springframework.aop.target.dynamic.BeanFactoryRefreshableTargetSource
  - org.springframework.aop.interceptor.AbstractTraceInterceptor (implements org.aopalliance.intercept.MethodInterceptor, java.io.Serializable)
    - org.springframework.aop.interceptor.AbstractMonitoringInterceptor
      - org.springframework.aop.interceptor.JamonPerformanceMonitorInterceptor
      - org.springframework.aop.interceptor.PerformanceMonitorInterceptor
    - org.springframework.aop.interceptor.CustomizableTraceInterceptor
    - org.springframework.aop.interceptor.SimpleTraceInterceptor
      - org.springframework.aop.interceptor.DebugInterceptor
  - org.springframework.aop.config.AdviceEntry (implements org.springframework.beans.factory.parsing.ParseState.Entry)
  - org.springframework.aop.framework.adapter.AdvisorAdapterRegistrationManager (implements org.springframework.beans.factory.config.BeanPostProcessor)
  - org.springframework.aop.config.AdvisorEntry (implements org.springframework.beans.factory.parsing.ParseState.Entry)
  - org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor (implements org.springframework.aop.AfterAdvice, org.aopalliance.intercept.MethodInterceptor, java.io.Serializable)
  - org.springframework.aop.support.annotation.AnnotationClassFilter (implements org.springframework.aop.ClassFilter)
  - org.springframework.aop.support.annotation.AnnotationMatchingPointcut (implements org.springframework.aop.Pointcut)
  - org.springframework.aop.config.AopConfigUtils
  - org.springframework.aop.framework.AopContext
  - org.springframework.aop.config.AopNamespaceUtils
  - org.springframework.aop.framework.AopProxyUtils
  - org.springframework.aop.support.AopUtils
  - org.springframework.aop.config.AspectEntry (implements org.springframework.beans.factory.parsing.ParseState.Entry)
  - org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer (implements org.springframework.core.ParameterNameDiscoverer)
  - org.springframework.aop.aspectj.AspectJAopUtils
  - org.springframework.aop.aspectj.AspectJPointcutAdvisor (implements org.springframework.core.Ordered, org.springframework.aop.PointcutAdvisor)
  - org.springframework.aop.aspectj.AspectJProxyUtils
  - org.springframework.aop.aspectj.AspectJWeaverMessageHandler (implements org.aspectj.bridge.IMessageHandler)
  - org.springframework.aop.aspectj.annotation.AspectMetadata (implements java.io.Serializable)
  - org.springframework.aop.interceptor.AsyncExecutionAspectSupport (implements org.springframework.beans.factory.BeanFactoryAware)
    - org.springframework.aop.interceptor.AsyncExecutionInterceptor (implements org.aopalliance.intercept.MethodInterceptor, org.springframework.core.Ordered)
  - org.springframework.aop.framework.autoproxy.AutoProxyUtils
  - org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper
  - 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.support.ClassFilters
  - org.springframework.aop.support.ComposablePointcut (implements org.springframework.aop.Pointcut, java.io.Serializable)
  - org.springframework.util.ConcurrencyThrottleSupport (implements java.io.Serializable)
    - org.springframework.aop.interceptor.ConcurrencyThrottleInterceptor (implements org.aopalliance.intercept.MethodInterceptor, java.io.Serializable)
  - org.springframework.aop.support.ControlFlowPointcut (implements org.springframework.aop.ClassFilter, org.springframework.aop.MethodMatcher, org.springframework.aop.Pointcut, java.io.Serializable)
  - org.springframework.aop.aspectj.DeclareParentsAdvisor (implements org.springframework.aop.IntroductionAdvisor)
  - org.springframework.aop.framework.adapter.DefaultAdvisorAdapterRegistry (implements org.springframework.aop.framework.adapter.AdvisorAdapterRegistry, java.io.Serializable)
  - org.springframework.aop.framework.DefaultAdvisorChainFactory (implements org.springframework.aop.framework.AdvisorChainFactory, java.io.Serializable)
  - org.springframework.aop.framework.DefaultAopProxyFactory (implements org.springframework.aop.framework.AopProxyFactory, java.io.Serializable)
  - org.springframework.aop.support.DefaultIntroductionAdvisor (implements org.springframework.aop.ClassFilter, org.springframework.aop.IntroductionAdvisor, org.springframework.core.Ordered, java.io.Serializable)
  - org.springframework.aop.scope.DefaultScopedObject (implements org.springframework.aop.scope.ScopedObject, java.io.Serializable)
  - org.springframework.aop.support.DynamicMethodMatcher (implements org.springframework.aop.MethodMatcher)
    - org.springframework.aop.support.DynamicMethodMatcherPointcut (implements org.springframework.aop.Pointcut)
  - org.springframework.aop.target.EmptyTargetSource (implements java.io.Serializable, org.springframework.aop.TargetSource)
  - org.springframework.aop.interceptor.ExposeBeanNameAdvisors
  - org.springframework.aop.interceptor.ExposeInvocationInterceptor (implements org.aopalliance.intercept.MethodInterceptor, org.springframework.core.PriorityOrdered, java.io.Serializable)
  - org.springframework.aop.framework.adapter.GlobalAdvisorAdapterRegistry
  - org.springframework.aop.target.HotSwappableTargetSource (implements java.io.Serializable, org.springframework.aop.TargetSource)
  - org.springframework.aop.support.IntroductionInfoSupport (implements org.springframework.aop.IntroductionInfo, java.io.Serializable)
    - org.springframework.aop.support.DelegatePerTargetObjectIntroductionInterceptor (implements org.springframework.aop.IntroductionInterceptor)
    - org.springframework.aop.support.DelegatingIntroductionInterceptor (implements org.springframework.aop.IntroductionInterceptor)
  - org.springframework.aop.aspectj.annotation.LazySingletonAspectInstanceFactoryDecorator (implements org.springframework.aop.aspectj.annotation.MetadataAwareAspectInstanceFactory, java.io.Serializable)
  - org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor (implements org.springframework.aop.BeforeAdvice, org.aopalliance.intercept.MethodInterceptor, java.io.Serializable)
  - org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint (implements org.aspectj.lang.JoinPoint.StaticPart, org.aspectj.lang.ProceedingJoinPoint)
  - org.springframework.aop.config.MethodLocatingFactoryBean (implements org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.FactoryBean<T>)
  - org.springframework.aop.support.MethodMatchers
  - org.springframework.beans.factory.xml.NamespaceHandlerSupport (implements org.springframework.beans.factory.xml.NamespaceHandler)
    - org.springframework.aop.config.AopNamespaceHandler
  - org.springframework.aop.config.PointcutEntry (implements org.springframework.beans.factory.parsing.ParseState.Entry)
  - org.springframework.aop.support.Pointcuts
  - org.springframework.aop.framework.ProxyConfig (implements java.io.Serializable)
    - org.springframework.aop.framework.AbstractSingletonProxyFactoryBean (implements org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean)
    - 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.ProxyFactory
        - org.springframework.aop.framework.ProxyFactoryBean (implements org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.FactoryBean<T>)
    - org.springframework.aop.framework.ProxyProcessorSupport (implements org.springframework.aop.framework.AopInfrastructureBean, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.core.Ordered)
      - org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor (implements org.springframework.beans.factory.config.BeanPostProcessor)
        - org.springframework.aop.framework.autoproxy.AbstractBeanFactoryAwareAdvisingPostProcessor (implements org.springframework.beans.factory.BeanFactoryAware)
      - 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.framework.autoproxy.DefaultAdvisorAutoProxyCreator (implements org.springframework.beans.factory.BeanNameAware)
          - org.springframework.aop.framework.autoproxy.InfrastructureAdvisorAutoProxyCreator
        - org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator
    - org.springframework.aop.scope.ScopedProxyFactoryBean (implements org.springframework.aop.framework.AopInfrastructureBean, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.FactoryBean<T>)
  - org.springframework.aop.framework.autoproxy.ProxyCreationContext
  - org.springframework.aop.framework.ReflectiveMethodInvocation (implements java.lang.Cloneable, org.springframework.aop.ProxyMethodInvocation)
  - org.springframework.aop.support.RootClassFilter (implements org.springframework.aop.ClassFilter, java.io.Serializable)
  - org.springframework.aop.scope.ScopedProxyUtils
  - 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.interceptor.SimpleAsyncUncaughtExceptionHandler (implements org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler)
  - org.springframework.aop.config.SimpleBeanFactoryAwareAspectInstanceFactory (implements org.springframework.aop.aspectj.AspectInstanceFactory, org.springframework.beans.factory.BeanFactoryAware)
  - 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)
  - org.springframework.aop.target.SingletonTargetSource (implements java.io.Serializable, org.springframework.aop.TargetSource)
  - org.springframework.aop.support.StaticMethodMatcher (implements org.springframework.aop.MethodMatcher)
    - org.springframework.aop.support.annotation.AnnotationMethodMatcher
    - org.springframework.aop.support.StaticMethodMatcherPointcut (implements org.springframework.aop.Pointcut)
      - org.springframework.aop.support.AbstractRegexpMethodPointcut (implements java.io.Serializable)
        - org.springframework.aop.support.JdkRegexpMethodPointcut
      - org.springframework.aop.support.NameMatchMethodPointcut (implements java.io.Serializable)
      - org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor (implements org.springframework.core.Ordered, org.springframework.aop.PointcutAdvisor, java.io.Serializable)
  - java.lang.Throwable (implements java.io.Serializable)
    - java.lang.Exception
      - java.lang.RuntimeException
        - org.aopalliance.aop.AspectException
        - org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.AmbiguousBindingException
        - java.lang.IllegalArgumentException
          - org.springframework.aop.framework.adapter.UnknownAdviceTypeException
        - org.springframework.core.NestedRuntimeException
          - org.springframework.aop.framework.AopConfigException
            - org.springframework.aop.aspectj.annotation.NotAnAtAspectException
          - org.springframework.aop.AopInvocationException
  - org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor (implements org.springframework.aop.AfterAdvice, org.aopalliance.intercept.MethodInterceptor)
  - org.springframework.aop.aspectj.TypePatternClassFilter (implements org.springframework.aop.ClassFilter)

## 接口分层结构

- org.aopalliance.aop.Advice
  - org.springframework.aop.AfterAdvice
    - org.springframework.aop.AfterReturningAdvice
    - org.springframework.aop.ThrowsAdvice
  - org.springframework.aop.AfterReturningAdvice
  - org.springframework.aop.BeforeAdvice
    - org.springframework.aop.MethodBeforeAdvice
  - org.aopalliance.intercept.ConstructorInterceptor
  - org.springframework.aop.DynamicIntroductionAdvice
    - org.springframework.aop.IntroductionInterceptor (并 extends org.aopalliance.intercept.MethodInterceptor)
  - org.aopalliance.intercept.Interceptor
    - org.aopalliance.intercept.ConstructorInterceptor
    - org.springframework.aop.IntroductionInterceptor (并 extends org.springframework.aop.DynamicIntroductionAdvice, org.aopalliance.intercept.MethodInterceptor)
    - org.aopalliance.intercept.MethodInterceptor
      - org.springframework.aop.IntroductionInterceptor (并 extends org.springframework.aop.DynamicIntroductionAdvice)
  - org.springframework.aop.IntroductionInterceptor (并 extends org.springframework.aop.DynamicIntroductionAdvice, org.aopalliance.intercept.MethodInterceptor)
  - org.springframework.aop.MethodBeforeAdvice
  - org.aopalliance.intercept.MethodInterceptor
    - org.springframework.aop.IntroductionInterceptor (并 extends org.springframework.aop.DynamicIntroductionAdvice)
  - org.springframework.aop.ThrowsAdvice
- org.springframework.aop.framework.AdvisedSupportListener
- org.springframework.aop.Advisor
  - org.springframework.aop.aspectj.InstantiationModelAwarePointcutAdvisor
  - org.springframework.aop.IntroductionAdvisor (并 extends org.springframework.aop.IntroductionInfo)
  - org.springframework.aop.PointcutAdvisor
    - org.springframework.aop.aspectj.InstantiationModelAwarePointcutAdvisor
- org.springframework.aop.framework.adapter.AdvisorAdapter
- org.springframework.aop.framework.adapter.AdvisorAdapterRegistry
- org.springframework.aop.framework.AdvisorChainFactory
- org.springframework.aop.framework.AopInfrastructureBean
- org.springframework.aop.framework.AopProxy
- org.springframework.aop.framework.AopProxyFactory
- org.springframework.aop.aspectj.annotation.AspectJAdvisorFactory
- org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler
- org.springframework.aop.ClassFilter
- org.springframework.aop.IntroductionInfo
  - org.springframework.aop.IntroductionAdvisor (并 extends org.springframework.aop.Advisor)
- org.aopalliance.intercept.Joinpoint
  - org.aopalliance.intercept.ConstructorInvocation
  - org.aopalliance.intercept.Invocation
    - org.aopalliance.intercept.ConstructorInvocation
    - org.aopalliance.intercept.MethodInvocation
      - org.springframework.aop.ProxyMethodInvocation
    - org.springframework.aop.ProxyMethodInvocation
  - org.aopalliance.intercept.MethodInvocation
    - org.springframework.aop.ProxyMethodInvocation
  - org.springframework.aop.ProxyMethodInvocation
- org.springframework.aop.MethodMatcher
  - org.springframework.aop.IntroductionAwareMethodMatcher
- org.springframework.core.Ordered
  - org.springframework.aop.aspectj.AspectInstanceFactory
    - org.springframework.aop.aspectj.annotation.MetadataAwareAspectInstanceFactory
  - org.springframework.aop.aspectj.AspectJPrecedenceInformation
  - org.springframework.aop.aspectj.annotation.MetadataAwareAspectInstanceFactory
- org.springframework.aop.Pointcut
  - org.springframework.aop.support.ExpressionPointcut
- org.springframework.aop.target.PoolingConfig
- org.springframework.aop.RawTargetAccess
  - org.springframework.aop.scope.ScopedObject
- org.springframework.aop.target.dynamic.Refreshable
- org.springframework.aop.SpringProxy
- org.springframework.aop.TargetClassAware
  - org.springframework.aop.framework.Advised
  - org.springframework.aop.TargetSource
- org.springframework.aop.framework.autoproxy.TargetSourceCreator
- org.springframework.aop.target.ThreadLocalTargetSourceStats

## 枚举分层结构

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