1、构建切面
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#postProcessBeforeInstantiation(AbstractAutoProxyCreator-->AnnotationAwareAspectJAutoProxyCreator) --> org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator#shouldSkip --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#findEligibleAdvisors --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#findCandidateAdvisors --> org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper#findAdvisorBeans --> org.springframework.aop.aspectj.annotation.BeanFactoryAspectJAdvisorsBuilder#buildAspectJAdvisors --> org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory#getAdvisors(AspectJAdvisorFactory-->ReflectiveAspectJAdvisorFactory) --> org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory#getAdvisorMethods --> org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory#getAdvisor --> org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory#getPointcut(返回AspectJExpressionPointcut) --> org.springframework.aop.aspectj.annotation.InstantiationModelAwarePointcutAdvisorImpl#InstantiationModelAwarePointcutAdvisorImpl(调用构造方法,Advisor-->PointcutAdvisor-->InstantiationModelAwarePointcutAdvisor-->InstantiationModelAwarePointcutAdvisorImpl) --> org.springframework.aop.aspectj.annotation.InstantiationModelAwarePointcutAdvisorImpl#instantiateAdvice --> org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory#getAdvice
2、创建代理对象
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#postProcessAfterInitialization(AbstractAutoProxyCreator-->AnnotationAwareAspectJAutoProxyCreator) --> org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#wrapIfNecessary --> org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator#shouldSkip --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#findEligibleAdvisors --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#findCandidateAdvisors --> org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper#findAdvisorBeans --> org.springframework.aop.aspectj.annotation.BeanFactoryAspectJAdvisorsBuilder#buildAspectJAdvisors --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#getAdvicesAndAdvisorsForBean --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#findEligibleAdvisors --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#findCandidateAdvisors --> org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper#findAdvisorBeans --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#findAdvisorsThatCanApply --> org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator#extendAdvisors --> org.springframework.aop.aspectj.AspectJProxyUtils#makeAdvisorChainAspectJCapableIfNecessary(额外增加ExposeInvocationInterceptor) --> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#sortAdvisors(切面排序) --> org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#createProxy(创建代理对象) --> org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#buildAdvisors --> org.springframework.aop.framework.adapter.DefaultAdvisorAdapterRegistry#wrap(创建DefaultPointcutAdvisor关联advice,AdvisorAdapterRegistry-->DefaultAdvisorAdapterRegistry) --> org.springframework.aop.framework.AdvisedSupport#addAdvisors(Advisor... advisors)(设置AOP关联的advisor列表) --> org.springframework.aop.framework.ProxyFactory#getProxy(java.lang.ClassLoader) --> org.springframework.aop.framework.ProxyCreatorSupport#getAopProxyFactory(获取DefaultAopProxyFactory,AopProxyFactory-->DefaultAopProxyFactory) --> org.springframework.aop.framework.DefaultAopProxyFactory#createAopProxy(返回JdkDynamicAopProxy或者ObjenesisCglibAopProxy) --> org.springframework.aop.framework.AopProxy#getProxy(java.lang.ClassLoader)(返回代理对象)



