Bean 的生產過程

Spring 容器從加載配置文件到創建出一個完整的Bean 的作業流程及參與的角色

Bean

(1),ResourceLoader 從存儲介質中加載Spring配置信息,并使用Resource表示這個配置文件資源

(2),BeanDefinitionReader 讀取 Resource 所指向的配置文件資源,然后結項配置文件。配置文件中的每個<Bean> 解析成一個 BeanDefinition 對象,并保存至 BeanDefinitionRegistry 中去

(3),容器掃描 BeanDefinitionRegistry 中的 BeanDefinition, 使用 Java 反射機制 識別出 Bean 后置處理器(實現BeanFactoryPostProcessor 接口的Bean),然后調用這些Bean工廠后處理器對BeanDefinitionRegistry 中的 BeanDefinition 進行加工處理,主要完成兩項工作:

  • 對使用占位符的<Bean> 元素標簽進行解析工作,得到最終的配置值。這意味著對一些半成品的BeanDefinition 對象進行加工處理并得到成品的 BeanDefinition 對象
  • 對 BeanDefinitionRegistry 中的BeanDefinition 進行掃描,通過 java 反射機制 找出所有屬性編輯器Bean(所有實現了PropertyEditor 接口的Bean),并將它們自動注冊到Spring 容器的屬性編輯器注冊表中(PropertyEditorRegistry)

(4),Spring 容器從BeanDefinitionRegistry 中取出加工后的BeanDefinition ,并調用 InstantiationStrategy 著手進行Bean 實例化的工作

(5),在實例化Bean 時,Spring 容器使用 BeanWrapper 對Bean 進行封裝,完成Bean 屬性的注入工作

(6),利用容器中注冊的Bean 后處理器(實現 BeanPostProcessor 接口的Bean)對已經完成屬性注入工作的 Bean 進行后續加工,直接裝配出一個準備就緒的 Bean

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,958評論 6 342
  • Spring容器高層視圖 Spring 啟動時讀取應用程序提供的Bean配置信息,并在Spring容器中生成一份相...
    Theriseof閱讀 2,844評論 1 24
  • 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
    SnailTyan閱讀 4,201評論 2 7
  • 我是瘋了,瘋了二十多年了,如今想起犯病時被我掐死的兒子,我也是深深地自責。 曾經我離家出走,想要走得很遠,我不想一...
    意念的康橋閱讀 508評論 0 0