Java Spring IOC 容器入門

本文章只是粗粗講解了一下基本流程,并不涉及更深入的內容

ApplicationContext ac=new ClassPathXmlApplicationContext("Spring.xml");
獲取Spring配置文件
接口可以實現(xiàn)多繼承 ,但類不行

Public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver

向下轉型為ClassPathXmlApplicationContext 這么個類

那么這個類又是何方神圣?我畫了個結構的粗體,但中間很多借口沒有標明,(在回中會具體講解幾個借口)

context.png

ResourceLoader:這個接口是定義了了兩個方法:
Resource getResource(String location);(Resource 是一個接口,應該是對于inputstream resource 資源的一系列操作接口)
ClassLoader getClassLoader();
Bean定義資源文件定位由ResourceLoader通過統(tǒng)一的Resource接口來完成,Resource接口將各種形式的Bean定義資源文件封裝成統(tǒng)一的、IoC容器可進行載入操作的對象。

ResourceUtils 這個類在圖中并沒有標明,它是Spring一系列資源的URL 的字符定義。(“file:”,zip等)。

DefaultResourceLoader 這個類其實是通過獲取ClassLoader以及資源URL進行資源獲取,在之前的代碼中是用于Spring配置文件的加載。

這段代碼初始化的時候,是調用ClassPathXmlApplicationContext 的構造函數(shù),其構造函數(shù)跳轉并將輸入的字符串轉化為數(shù)組對象,進入第二個構造函數(shù)。
第二個構造函數(shù)中,

Paste_Image.png

Super(parent)的函數(shù)是調用其父類的方法,具體是 AbstractApplicationContext類的構造函數(shù),
this()中獲取了一個ResourcePatternResolver對象,應該是一個接口,它調用的get方法返回的是實現(xiàn)其接口的一個類:PathMatchingResourcePatternResolver
PathMatchingResourcePatternResolver:這個類實現(xiàn)的是一個資源location path匹配到一個或者多個匹配資源。

Paste_Image.png

這個函數(shù)是正在調用的函數(shù),setParent()
Parent 是ApplicationContext 類,這個類在Spring中還是比較重要的。這個類在這章Spring基礎流程片就不深加了解。這個類我會放在另一章中詳細講解。

Paste_Image.png

這個方法是等到配置文件的信息。
從Assert類中和其在這些代碼中出現(xiàn)的頻率來說,Spring在各種數(shù)據(jù)和方法的防范上可以說是非常明顯的,邏輯十分清楚。(Assert類是對于各種情況的判斷,包括object是否為空等)。
Refresh()方法是啟動IOC容器的方法。
其實在IOC容器設計中,比較有名的是ApplicationContext 和BeanFactory這兩類。
但預知后事如何,請聽下回分解。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容