上**:
throws
bean***ception }
public這裡面列出了ioc容器初始化的大致步驟,第一步很容易看出來是初始化準備,這個方法裡只是設定了乙個活動標識,我們主要來看第二步,obtainfreshbeanfactory這個方法,它是用來告訴子類重新整理內部的bean工廠,接下來我們跟蹤進去看看。void refresh() throws
bean***ception, illegalstateexception
protectedconfigurablelistablebeanfactory obtainfreshbeanfactory()
return
beanfactory;
}
protected方法加上了final關鍵字,也就是說此方法不可被重寫,可以很清楚的看到,ioc容器的初始化就是在這個方法裡發生的,第一步先是判斷有無現有的工廠,有的話便會將其摧毀,否則,就會建立乙個預設的bean工廠,也就是前面提到的defaultlistablebeanfactory,注意看loadbeandefinitions(beanfactory);這裡,當我們建立了乙個預設的bean工廠以後,便是載入bean的定義。這與我們上一章所使用的原始的建立bean工廠的方式極為相似。final
void refreshbeanfactory() throws
bean***ception
try }
catch
(ioexception ex)
}
Spring原始碼 IOC(一)
它是spring中bean容器的頂級介面。裡面有獲取bean,判斷是否包含bean,是否單例,獲取別名等基本方法 listablebeanfactory 根據條件獲取bean的配置清單。如string getbeandefinitionnames 返回bean在工廠中定義的名稱。bean在工廠中定義...
閱讀Spring原始碼
如何閱讀spring原始碼 學習原始碼的思路 為擴充套件 調優 掌握框架的工作流程和原理。提公升自己的程式設計能力 學習他人的設計模式和思路。掌握設計方法和分析思路。學習原始碼的方法 思路掌握問題域理論和核心概念 搞明白做什麼,如何做 從整體到部分 找到入口,先理清主幹流程,後細節 多思考,多分析 ...
Spring原始碼學習(一) IoC
一直想抽空把spring原始碼拿來讀讀,但真正去做這件事的時候發現不簡單,spring發展這麼多年,它的規模已不是乙個一般的開源框 架所能比的,它的主要架構和流程不是非常清晰,很難抓到要害,但有一點可以肯定,它的根基是ioc和aop,所有的功能擴充套件和對其他開源框架的支援都是基 於這兩點來做的,因...