spring原始碼深度解析筆記(三)
阿新 • • 發佈:2018-12-10
之前提到在xmlBeanFactory建構函式中呼叫了XmlBeanDefinitionReader型別的reader屬性提供的方法this.reader.loadBeanDefinitions(resource),這就是載入整個資源載入的切入點。
當進入XmlBeanDefinitionReader後首先對引數Resource使用EncodedResource類進行封裝
EncodedResource的作用是對資原始檔的編碼進行處理的。其中的主要邏輯體現在getReader();當設定編碼屬性的時候spring會使用相應的編碼作為輸入流的的編碼
當構造好encodedResource物件後,再次轉入了可複用方法loadBeanDefinitions(new EncodedResource(resource))
再次整理下資料準備階段首先對傳入的resource引數做封裝,目的是考慮到Resource可能存在編碼要求的情況,其次,通過SAX讀取XML檔案的方式來準備InputSource物件,最後將準備的資料通過引數傳入真正的核心處理部分doLoadBeanDefinitions
以上程式碼在不考慮異常類的情況下只做了三件事
(1)獲取對XML檔案的驗證模式。
(2)載入XML檔案,並得到對應的Document.
(3)根據返回的Document註冊Bean資訊。