AOP原理-AnnotationAwareAspectJAutoProxyCreator执行时机 || InstantiationAwareBeanPostProcessor
生活随笔
收集整理的這篇文章主要介紹了
AOP原理-AnnotationAwareAspectJAutoProxyCreator执行时机 || InstantiationAwareBeanPostProcessor
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AnnotationAwareAspectJAutoProxyCreator => InstantiationAwareBeanPostProcessor
?
finishBeanFactoryInitialization(beanFactory)完成BeanFactory初始化工作創建剩下的單實例bean* 1)、遍歷獲取容器中所有的Bean,依次創建對象getBean(beanName); * getBean->doGetBean()->getSingleton()-> * 2)、創建bean * 【AnnotationAwareAspectJAutoProxyCreator在所有bean創建之前會有一個攔截,InstantiationAwareBeanPostProcessor,會調用postProcessBeforeInstantiation()】 * 1)、先從緩存中獲取當前bean,如果能獲取到,說明bean是之前被創建過的,直接使用,否則再創建; * 只要創建好的Bean都會被緩存起來 * 2)、createBean();創建bean; * AnnotationAwareAspectJAutoProxyCreator 會在任何bean創建之前先嘗試返回bean的實例 * 【BeanPostProcessor是在Bean對象創建完成初始化前后調用的】 * 【InstantiationAwareBeanPostProcessor是在創建Bean實例之前先嘗試用后置處理器返回對象的】 * 1)、resolveBeforeInstantiation(beanName, mbdToUse);解析BeforeInstantiation * 希望后置處理器在此能返回一個代理對象;如果能返回代理對象就使用,如果不能就繼續 * 1)、后置處理器先嘗試返回對象; * bean = applyBeanPostProcessorsBeforeInstantiation(): * 拿到所有后置處理器,如果是InstantiationAwareBeanPostProcessor; * 就執行postProcessBeforeInstantiation * if (bean != null) {bean = applyBeanPostProcessorsAfterInitialization(bean, beanName);} * * 2)、doCreateBean(beanName, mbdToUse, args);真正的去創建一個bean實例;總結
以上是生活随笔為你收集整理的AOP原理-AnnotationAwareAspectJAutoProxyCreator执行时机 || InstantiationAwareBeanPostProcessor的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @EnableAspectJAutoPr
- 下一篇: AOP原理-创建AOP代理--Annot