Spring容器的創建過程之如何註冊BeanPostProcessor詳解
註冊BeanPostProcessor
refresh()
調用registerBeanPostProcessors(beanFactory)
方法,註冊Bean的後置處理器,後置處理器是用來攔截bean創建過程的。
不同接口類型的BeanPostProcessor
,即繼承瞭BeanPostProcessor
接口的子接口,在Bean創建前後的執行時機是不一樣的
BeanPostProcessor
DestructionAwareBeanPostProcessor
InstantiationAwareBeanPostProcessor
SmartInstantiationAwareBeanPostProcessor
MergedBeanDefinitionPostProcessor
首先獲取所有的BeanPostProcessor
後置處理器都默認可以通過PriorityOrdered
、Ordered
這兩個接口來指定執行優先級
先註冊實現瞭priorityOrdered
優先級接口的BeanPostProcessor
,調用registerBeanPostProcessors()
方法進行註冊
registerBeanPostProcessors()
方法調用addBeanPostProcessor()
方法將BeanPostProcessor
添加到BeanFactory
中
再註冊實現瞭Ordered
優先級接口的BeanPostProcessor
最後註冊沒有實現任何優先級接口的BeanPostProcessor
最終註冊MergedBeanDefinitionPostProcessor
類型的BeanPostProcessor
還會註冊一個ApplicationListenerDetector
來在Bean創建完成後檢查是否ApplicationListener
,如果是,就會把這個監聽器bean放在容器中保存起來
到此這篇關於Spring容器的創建過程之如何註冊BeanPostProcessor詳解的文章就介紹到這瞭,更多相關註冊BeanPostProcessor內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 面試JAVA時,問到spring該怎麼回答
- 詳解Spring ApplicationContext加載過程
- 關於Spring BeanPostProcessor的執行順序
- spring Bean創建的完整過程記錄
- Java 圖解Spring啟動時的後置處理器工作流程是怎樣的