[TOC]
JoinpointPointcutAdviceAdvisorIntroductionInfoProxyCreatorSupportProxyFactory 、ProxyFactoryBeanAopProxyFactory 配置管理器 - AdvisedSupportAbstractAutoProxyCreatorMethodInvocationConstructorInvocationReflectiveMethodInvocationCglibMethodInvocation核心组件:
ClassFilterMethodMatcherorg.springframework.aop.support.ComposablePointcutClassFilter 工具类 - ClassFiltersMethodMatcher 工具类 - MethodMatchersPointcut 工具类 - PointcutsPointcut - StaticMethodMatcherPointcutPointcut - JdkRegexpMethodPointcutPointcut - ControlFlowPointcutorg.springframework.aop.aspectj.AspectJExpressionPointcutSUPPORTED_PRIMITIVES 字段org.aspectj.weaver.tools.PointcutExpressionMethodInterceptorConstructorInterceptororg.springframework.aop.BeforeAdviceorg.springframework.aop.MethodBeforeAdviceorg.springframework.aop.AfterAdviceorg.springframework.aop.AfterReturningAdviceorg.springframework.aop.ThrowsAdvice接口:
org.springframework.aop.BeforeAdviceorg.springframework.aop.MethodBeforeAdvice实现:
org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptororg.springframework.aop.aspectj.AspectJMethodBeforeAdviceorg.springframework.aop.AfterAdviceorg.springframework.aop.AfterReturningAdviceorg.springframework.aop.ThrowsAdviceorg.springframework.aop.framework.adapter.ThrowsAdviceInterceptororg.springframework.aop.framework.adapter.AfterReturningAdviceInterceptororg.springframework.aop.AfterAdviceorg.springframework.aop.AfterReturningAdviceorg.springframework.aop.ThrowsAdviceorg.springframework.aop.aspectj.AspectJAfterAdviceorg.springframework.aop.aspectj.AspectJAfterReturningAdviceorg.springframework.aop.aspectj.AspectJAfterThrowingAdviceorg.springframework.aop.support.DefaultPointcutAdvisorIntroductionAdvisororg.springframework.aop.support.DefaultPointcutAdvisororg.springframework.aop.aspectj.AspectJExpressionPointcutAdvisororg.springframework.aop.aspectj.AspectJPointcutAdvisororg.springframework.aop.support.StaticMethodMatcherPointcutAdvisororg.springframework.aop.support.AbstractBeanFactoryPointcutAdvisororg.springframework.aop.IntroductionInfoorg.springframework.aop.support.DefaultIntroductionAdvisororg.springframework.aop.aspectj.DeclareParentsAdvisororg.springframework.aop.framework.adapter.MethodBeforeAdviceAdapterorg.springframework.aop.framework.adapter.AfterReturningAdviceAdapterorg.springframework.aop.framework.adapter.ThrowsAdviceAdapterorg.springframework.aop.framework.AopProxyorg.springframework.aop.framework.JdkDynamicAopProxyorg.springframework.aop.framework.CglibAopProxyorg.springframework.aop.framework.ObjenesisCglibAopProxyorg.springframework.aop.framework.AopProxyFactoryorg.springframework.aop.framework.JdkDynamicAopProxyorg.springframework.aop.framework.CglibAopProxyorg.springframework.aop.framework.ObjenesisCglibAopProxyorg.springframework.aop.framework.AdvisedSupportorg.springframework.aop.framework.DefaultAopProxyFactoryorg.springframework.aop.framework.AdvisedSupportorg.springframework.aop.framework.DefaultAopProxyFactoryorg.springframework.aop.framework.ProxyConfigorg.springframework.aop.framework.Advisedorg.springframework.aop.framework.AopProxy 实现org.springframework.aop.framework.DefaultAdvisorChainFactoryorg.springframework.aop.framework.InterceptorAndDynamicMethodMatcherorg.aopalliance.intercept.Interceptororg.springframework.aop.target.HotSwappableTargetSourceorg.springframework.aop.target.AbstractPoolingTargetSourceorg.springframework.aop.target.PrototypeTargetSourceorg.springframework.aop.target.ThreadLocalTargetSourceorg.springframework.aop.target.SingletonTargetSourceorg.springframework.aop.framework.AdvisedSupportorg.springframework.aop.framework.ProxyCreatorSupportorg.springframework.aop.framework.ProxyCreatorSupportorg.springframework.beans.factory.BeanClassLoaderAwareorg.springframework.beans.factory.BeanFactoryAwareorg.springframework.beans.factory.FactoryBeanorg.springframework.aop.framework.ProxyCreatorSupportorg.springframework.aop.aspectj.annotation.AspectMetadataorg.springframework.aop.aspectj.annotation.AspectJAdvisorFactoryorg.springframework.aop.framework.AdvisedSupportorg.springframework.aop.framework.ProxyCreatorSupportProxyCreatorSupport#createAopProxyorg.springframework.aop.framework.ProxyProcessorSupportorg.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessorDefaultAdvisorAutoProxyCreatorBeanNameAutoProxyCreatorInfrastructureAdvisorAutoProxyCreatororg.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreatororg.springframework.aop.framework.autoproxy.AbstractAutoProxyCreatororg.springframework.aop.scope.ScopedProxyFactoryBeanAbstractAutoProxyCreator#isInfrastructureClassConfigurationClassUtils#checkConfigurationClassCandidateThreadLocal 的扩展,临时存储 AOP 对象getSingletonTarget - 从实例中获取单例对象ultimateTargetClass - 从实例中获取最终目标类completeProxiedInterfaces - 计算 AdvisedSupport 配置中所有被代理的接口proxiedUserInterfaces - 从代理对象中获取代理接口isAopProxy - 判断对象是否为代理对象isJdkDynamicProxy - 判断对象是否为 JDK 动态代理对象isCglibProxy - 判断对象是否为 CGLIB 代理对象getTargetClass - 从对象中获取目标类型invokeJoinpointUsingReflection - 使用 Java 反射调用 Joinpoint(目标方法)org.springframework.context.annotation.EnableAspectJAutoProxyproxyTargetClass - 是否已类型代理exposeProxy - 是否将代理对象暴露在 AopContext 中ImportBeanDefinitionRegistrar 实现 - org.springframework.context.annotation.AspectJAutoProxyRegistrarorg.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator<aop:aspectj-autoproxy/>proxy-target-class - 是否已类型代理expose-proxy - 是否将代理对象暴露在 AopContext 中org.springframework.aop.config.AspectJAutoProxyBeanDefinitionParser<aop:config/> 、<aop:aspect/>proxy-target-class - 是否已类型代理expose-proxy - 是否将代理对象暴露在 AopContext 中pointcutadvisoraspectorg.springframework.aop.config.ConfigBeanDefinitionParser<aop:config/>ref - Spring Bean 引用的名称order - Aspect 顺序数pointcutdeclare-parentsbeforeafterafter-returningafter-throwingaround<aop:pointcut/><aop:aspect/> 或 <aop:config/>id - Pointcut IDexpression - (必须)AspectJ 表达式org.springframework.aop.Pointcut<aop:around/><aop:aspect/>pointcut - AspectJ Pointcut 表达式pointcut-ref - 引用的 AspectJ Pointcut 名称method - 拦截目标方法arg-names - 目标方法参数名称<aop:before/><aop:aspect/>pointcut - AspectJ Pointcut 表达式pointcut-ref - 引用的 AspectJ Pointcut 名称method - 拦截目标方法arg-names - 目标方法参数名称<aop:after/><aop:aspect/>pointcut - AspectJ Pointcut 表达式pointcut-ref - 引用的 AspectJ Pointcut 名称method - 拦截目标方法arg-names - 目标方法参数名称<aop:after-returning/><aop:aspect/>pointcut - AspectJ Pointcut 表达式pointcut-ref - 引用的 AspectJ Pointcut 名称method - 拦截目标方法arg-names - 目标方法参数名称returning - 方法参数名称<aop:after-throwing/><aop:aspect/>pointcut - AspectJ Pointcut 表达式pointcut-ref - 引用的 AspectJ Pointcut 名称method - 拦截目标方法arg-names - 目标方法参数名称throwing - 方法参数名称<aop:advisor/><aop:config/>advice-ref - Advice Bean 引用pointcut - AspectJ Pointcut 表达式pointcut-ref - AspectJ Pointcut Bean 引用order - Advisor 顺序数<aop:declare-parents/><aop:aspect/>types-matching - 是否已类型代理implement-interface - 实现接口全类名default-impl - 默认实现全类名delegate-ref - 委派实现 Bean 引用<aop:scoped-proxy/><aop:scoped-proxy/>proxy-target-class - 是否已类型代理