兩個核心類
1.defaultlistablebeanfactory
xmlbeanfactory 繼承向 defaultlistablebeanfacto1y,對它進行了擴充套件主要用於從 xml 文件中讀
取 beandefinition ,對於註冊及獲取 bean 都是使用從父類 defaultlistablebeanfactory 繼承的方
法去實現,而唯獨與父類不同的個性化實現就是增加了 xmlbeandefinitionreader 型別的 reader
屬性。 在 xm!beanfactory 中主要使用 reader 屬性對資源檔案進行讀取和註冊
beanfactory :定義 獲取 bean 及 bean 的各種屬性 。
defauits ingletonbeanregistry :對介面 si ngletonbeanregistry 各函式的實現。
beandefinitionregistry : 定義對 beandefinition 的各種增刪改操作 。
defaultlistablebeanfactory : 綜合上面所有功能, 主要是對 bean 註冊後的處理
2.xmlbeandefinitionreade
從 xmlbeandefinitionreader 中梳理一下資源檔案讀取、解析及註冊的大致脈絡
檢視各個類的功能:
spring 對其內部使用到的資源實現了自己的抽象結構 : resource 介面封裝底層資源繼承了介面inputstreamreader,裡面可以獲取到inputstream
對不同**的資源檔案都有相應的 resource 實現 : 檔案( filesystemresource ) 、 classpath
資源( classpathresource )、 url 資源( ur!resource )、 inputstream 資源( inputstreamresource ) 、
byte 陣列( bytearrayresource )等
public class xmlbeanfactory extends defaultlistablebeanfactory
public xmlbeanfactory(resource resource, beanfactory parentbeanfactory) throws bean***ception
//1public abstractautowirecapablebeanfactory()
現在對上面做個總結:
l . 封裝資源檔案 。當 進入 xrnlbean.definitionreader 後首先對 參 數 resource 使用
encodedresource 類進行封裝 。
public class xmlbeandefinitionreader extends abstractbeandefinitionreader
public int loadbeandefinitions(resource resource) throws beandefinitionstoreexception
public class xmlbeandefinitionreader extends abstractbeandefinitionreader
protected int doloadbeandefinitions(inputsource inputsource, resource resource)
return count;
} }
spring原始碼之bean包
測試 如下 建立乙個teacher類 public class teacher public void setdescription string description 在包下建立乙個spring.xml 在 測試 suppresswarnings deprecation public class...
spring原始碼分析 一 bean的註冊
a xml註冊獲取 system.out.println bean b 註解方式註冊的bean system.out.println bean configuration 告訴spring這是乙個配置類 public class mainconfig configuration components...
Spring原始碼之 Bean註解解析
spring bean是乙個方法級別的註解,用於產生乙個被spring ioc容器所管理的bean。通常情況下,bean可以與 configuration和 component註解一起使用 configuration和 component是方法級別的註解 在預設情況下 bean註解所產生的bean是...