Spring容器的創建過程之如何註冊BeanPostProcessor詳解

註冊BeanPostProcessor

refresh()調用registerBeanPostProcessors(beanFactory)方法,註冊Bean的後置處理器,後置處理器是用來攔截bean創建過程的。

在這裡插入圖片描述

不同接口類型的BeanPostProcessor,即繼承瞭BeanPostProcessor接口的子接口,在Bean創建前後的執行時機是不一樣的

  • BeanPostProcessor
  • DestructionAwareBeanPostProcessor
  • InstantiationAwareBeanPostProcessor
  • SmartInstantiationAwareBeanPostProcessor
  • MergedBeanDefinitionPostProcessor

首先獲取所有的BeanPostProcessor

在這裡插入圖片描述

後置處理器都默認可以通過PriorityOrderedOrdered這兩個接口來指定執行優先級

在這裡插入圖片描述

先註冊實現瞭priorityOrdered優先級接口的BeanPostProcessor,調用registerBeanPostProcessors()方法進行註冊

在這裡插入圖片描述

registerBeanPostProcessors()方法調用addBeanPostProcessor()方法將BeanPostProcessor添加到BeanFactory

在這裡插入圖片描述

再註冊實現瞭Ordered優先級接口的BeanPostProcessor

在這裡插入圖片描述

最後註冊沒有實現任何優先級接口的BeanPostProcessor

在這裡插入圖片描述

最終註冊MergedBeanDefinitionPostProcessor類型的BeanPostProcessor

在這裡插入圖片描述

還會註冊一個ApplicationListenerDetector來在Bean創建完成後檢查是否ApplicationListener,如果是,就會把這個監聽器bean放在容器中保存起來

在這裡插入圖片描述

到此這篇關於Spring容器的創建過程之如何註冊BeanPostProcessor詳解的文章就介紹到這瞭,更多相關註冊BeanPostProcessor內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: