Spring原始碼學習之容器的功能擴充套件

2021-07-27 08:15:18 字數 1704 閱讀 1581

我們都站在巨人的肩膀上

宣告:參考《spring原始碼深度解析》

beanfactory bf = new xmlbeanfactory(new classpathresource("beanfactorytest.xml"));
2.設定配置路徑
public void setconfiglocations(string locations)

}

此函式主要用於解析給定路徑陣列,如果包含特殊符號(如:$),則在resolvepath中會搜尋匹配的系統變數並替換。

public

void

refresh() throws bean***ception,illegalstateexceptioncatch(beanexception ex)

}}

4.容器擴充套件部分介紹

這裡我們只介紹部分功能的一些處理,具體細節還請參考原書籍

1.載入beanfactory

protected configurablelistablebeanfactory obtainfreshbeanfactory()

//具體實現方法交給這個方法

protected final void refreshbeanfactory() throws bean***ception

}catch(ioexception ex)

}

步驟解析:

1. 建立defaultlistablebeanfactory 。defaultlistablebeanfactory 是容器的基礎,必須要首先例項化。

2. 指定序列化id。

3. 定製beanfactory。

4. 載入beandefinition。

5. 使全域性變數記錄beanfactory類例項。因為defaultlistablebeanfactory 型別的遍歷beanfactory是函式內的區域性變數,所以要使用全域性變數記錄分析結果。

2.定製beanfactory

在基本容器的基礎上,增加了是否允許覆蓋是否允許誇張的設定並提供了註解@qualifier和@autowired的支援。

在原始碼中是否允許覆蓋和依賴只是判斷了是否為空,如果不為空要進行設定,那麼就使用子類覆蓋方法。

public

class ... entends

protected

void

customizebeanfactory(defaultlistablebeanfactory beanfactory)

}

3.註冊***

protected

void

registerlisteners()

//配置檔案註冊的***處理

for(string lisname : listenerbeannames)

}

4.finishrefresh
protected

void

finishrefresh()

onrefresh。啟動所有實現了lifecycle介面的bean。

Spring原始碼 核心 容器

核心思想 容器 web容器 tomcat等 啟動載入web.xml配置檔案,將配置資訊封裝成servletcontext spring配置 contextconfiglocation param name classpath spring dal.xml classpath spring servi...

Spring原始碼之 容器的載體和容器的載入

測試用例 使用如下的列舉建立單例容器 slf4j 建立私有的無參建構函式 noargsconstructor access accesslevel.private public class beancontainer private enum containerholder 容器的組成部分 儲存cl...

Spring原始碼學習

a spring 初始化的時候首先要執行的類為 org.springframework.web.context.contextloaderlistener 或 org.springframework.web.context.contextloaderservlet 接下來看一下在這個方法裡幹了寫什麼...