最近在看spring的原始碼,擔心忘掉了,打個記號,也請大家一起指正其中的錯誤,防止走歪路。
從xml
配置檔案載入入手
xml配置檔案載入由
完成,該類的繼承關係如下:
實際呼叫:
personservice service = (personservice)context.getbean("personservice");
beans.xml
載入在建立
該構造函式呼叫具體內部步驟如下:
1.建立pathmatchingresourcepatternresolver
例項,該例項用於後續將檔案路徑解析為資源物件。
2.處理引數中傳入的路徑陣列:去掉每個路徑的前後空格
3.呼叫refresh()
重新整理例項容器
(context)
,refresh
方法定義在
的父類:
refresh()包括重新整理前準備,獲取bean工廠例項,bean工廠使用前配置,載入bean定義檔案(這裡是xml,但沒有初始化bean例項),初始化bean例項,初始化訊息資源,初始化事件處理器,初始化生命週期依賴的bean,附加的重新整理,註冊監聽例項,完成beanfactory初始化,完成重新整理。當然如果出現異常需要回滾重新整理並刪除所有的bean例項。
獲取bean工廠例項:重新整理工廠(重新整理前準備、刪除context中所有的bean例項,關閉原beanfactory,
重新獲取beanfactory例項,自定義
beanfactory
例項配置(目前預設實現為空),載入
bean
配置檔案)
獲取beanfactory:
defaultlistablebeanfactory beanfactory = createbeanfactory();
customizebeanfactory(beanfactory);
載入bean定義的xml檔案
protected void loadbeandefinitions(defaultlistablebeanfactory beanfactory) throws ioexception
Spring 原始碼筆記
1.1 載入配置檔案 doloadconfig config.getinitparameter contextconfiglocation 如果是載入properties相對簡單一點,xml要解析,複雜一點 properties properties newproperties inputstrea...
spring原始碼筆記
beanfactory是頂層介面,最終實現類是defaultlistablebeanfactory,beanfactory有三個重要的子類,listablebeanfactory,hierarchicalbeanfactory autowirecapablebeanfactory 其中listabl...
Spring原始碼學習
a spring 初始化的時候首先要執行的類為 org.springframework.web.context.contextloaderlistener 或 org.springframework.web.context.contextloaderservlet 接下來看一下在這個方法裡幹了寫什麼...