面試:spring ioc實現原理

木木甫發表於2019-01-19

載入容器建立resource物件

首先載入一個spring的容器beanfactory,beanfactory的構造方法會建立一個實現了resource介面例項物件。resource物件通過setconfiguration()方法設定spring配置檔案位置。resource物件有三種實現
分別是fileresource,url resource,classpathresource。分別獲取檔案,網路資源,專案路徑下資源。

resource物件載入完成後,通過一個super關鍵字建立容器。如果有父類容器,會使用父類容器。否則新建一個容器。

提取驗證模式

容器建立完成後,開始載入配置檔案。beanfactory通過一個getinputstream方法拿到配置檔案的輸入流。在載入之前,需要驗證xml的正確性和驗證模式。通過解析配置的頭標籤。採用DTD或者xsd模式
(DTD使用其他規範或xsd(xml語法))如果不是DTD就使用xsd。

提取資訊

將配置檔案的資訊轉化為document物件。document物件負責將類資訊轉化為spring的特殊結構beandefintion.beandefination會儲存bean的屬性,是否懶載入,是否單例,是否抽象類,是否私有類等

註冊

將收集到的所有bean存到一個currenthashmap中,用beanname做key,beandefintion作為value。 如果有相同的key值,並且spring不允許重名。就丟擲異常。否則覆蓋原來的物件

相關文章