IOC容器擷取Spring bean
分解成三個步驟,互相之間解耦
1. 資源定位
2. Bean Definition載入
3. Bean Definition注入
以XML配置檔案的方式為例,記錄整個過程
資源定位篇
- 輸入:XML配置檔案
- 輸出:
暫不深究Resource的細節,至少應包含了資源類型、配置檔案類容。Resource(org.springframework.core.io)
Bean Definition載入篇
- 輸入:
Resource
- 輸出:
BeanDefinitionHolder(org.springframework.beans.factory.config)
BeanDefinitionHolder
中持有Bean Definition解析後的對象
BeanDefinition
、Bean的名稱、以alias。
BeanDeftinition
部分參數說明可見:http://blog.csdn.net/xianzhen376/article/details/49069867
資料轉化流程:
Resource
(InputStream) ->
Document
->
BeanDefinition
Bean Definition注冊篇
- 輸入:
BeanDefinitionHolder
- 輸出:
(org.springframework.beans.factory.support.DefaultListableBeanFactory)beanDefinitionMap
注冊解析出來的Bean,将内容記錄在beanDefinitionMap中。
至此XML檔案中定義的Bean就已經注入到IOC容器中。
附:細節部分後續詳細總結,BeanDefinition載入過程有點意思。
參考:
1. 《Spring 技術内幕》 by 計文柯
2. Spring 4.0 源碼