Spring原始碼學習筆記

2021-09-01 19:44:03 字數 1202 閱讀 4086

最近在看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 接下來看一下在這個方法裡幹了寫什麼...