天天看點

Spring學習(三)之依賴注入實作

涉及源碼解析。

一. 簡單依賴注入測試代碼:

Spring學習(三)之依賴注入實作

二. 對BeanFactory bf=newXmlBeanFactory(new ClassPathResource(“…”))分析。

   BeanFactory bf=newXmlBeanFactory(newClassPathResource(“…”));有些過時了。最頂上為核心類XmlBeanFactory繼承自 DefautListableBeanFactory 。

   整個BeanFactory類圖:

Spring學習(三)之依賴注入實作
Spring學習(三)之依賴注入實作

總的來說邏輯關系為:

Spring學習(三)之依賴注入實作
Spring學習(三)之依賴注入實作

1. 将配置檔案封裝為Resource類 Resource resource= newClassPathResource(“…”);

圖示Resource跟ClassPathResource:

Spring學習(三)之依賴注入實作

資源加載方式:

Spring學習(三)之依賴注入實作

2. 對配置檔案讀取  即new XmlBeanFactory(resource) 一直到doLoadBeanDefinitions

XmlBeanFactory構造函數中有一個方法this.reader.loadBeanDefitions(resource),其中reader為XmlBeanFactoryReader核心類。類圖:

Spring學習(三)之依賴注入實作
Spring學習(三)之依賴注入實作

讀取配置檔案總的邏輯圖:

Spring學習(三)之依賴注入實作
Spring學習(三)之依賴注入實作

文字描述為:

Spring學習(三)之依賴注入實作
Spring學習(三)之依賴注入實作

考慮到Resource可能有編碼要求故EncodeResource.

3. doLoadBeanDefinitions

總圖:

Spring學習(三)之依賴注入實作
Spring學習(三)之依賴注入實作

三個步驟對應三個函數:

Spring學習(三)之依賴注入實作
Spring學習(三)之依賴注入實作

三. 對第二句話getbean分析,未完待續...

繼續閱讀