1. 程式人生 > >spring原始碼深度解析筆記(三)

spring原始碼深度解析筆記(三)

之前提到在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資訊。