aop的初始化流程
所有的一切都是从spring的启动流程refresh方法中开始。
- 调用
registerBeanPostProcessors
方法完成bean后置处理器的注册。 - 调用
finishBeanFactoryInitialization
方法开始实例化所有剩余的(非惰性初始化)单例bean。 - 在实例化的过程中开始执行
getBean->doGetBean
方法最终执行createBean->doCreateBean
方法开始进行实例化。 - 在
initializeBean
方法执行AnnotationAwareAspectJAutoProxyCreator
Aop相关后置处理开始判断是否创建代理对象。
org.springframework.context.support.AbstractApplicationContext#refresh
aop后置处理器Bean name org.springframework.aop.config.internalAutoProxyCreator
aop后置处理器Bean AnnotationAwareAspectJAutoProxyCreator
AbstractApplicationContext#finishBeanFactoryInitialization
执行refresh方法中的bean预初始化方法
在doCreateBean的方法中进行实例化
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean
查看AnnotationAwareAspectJAutoProxyCreator继承关系 其父类实现 postProcessAfterInitialization
方法
AbstractAutoProxyCreator#postProcessAfterInitialization
进行后置处理器postProcessAfterInitialization
方法
wrapIfNecessary
方法最终执行创建代理方法 实例化bean对象