這是乙個很有意思的話題,在我剛學習spring框架的時候是使用junit測試配置的datasource是否配置成功,那時候要寫一段這樣的**來載入我們配置好的xml檔案:
@test
public void loadxml()
當然我們現在很少使用這種方式手動去載入乙個xml檔案了,現在大部分的spring專案大部分是使用springboot了,減少了不少之前springmvc專案中各種繁雜的配置項,以後就是springboot的天下了,當然這個另作一說了;
最近看了一些spring底層執行的書,對著一塊也是有了更深入的了解,spring是如何載入properties檔案和xml檔案的;
1.defaultlistablebeanfactory類
在package org.springframework.beans.factory.support;
下的
defaultlistablebeanfactory類是這是spring註冊及載入的核心部分,是spring註冊及載入bean的預設的實現,而xmlbeanfactory
是繼承自defaultlistablebeanfactory
他們的區別是xmlbeanfactory
中有乙個自己定義的xml讀取器(using an xmlbeandefinitionreader
),而這個讀取的方式是根據xml document方式來實現的;
當然這就涉及到xml解析的兩個方式:一種就是當前說到的這種xml doucument的方式,解析的過程中是通過讀取xml doucument 這相當於xml文件的約定格式的規範;
上面的方法就是xmlbeandefinitionreader
中載入document的方法
還有一種方式是讀取當前文件自己自帶的結構格式規範,來解析xml檔案,感興趣的話可以自己下去查詢一下;
2.xmlbeandefinitionreader類
載入過程:
1.使用resourceloader將資源檔案載入到對應的resource
2.通過documentloader對檔案進行轉換,將resource檔案轉換成document
3.通過實現的介面對document進行解析,使用beandefinitionparserdelegate對element進行解析
這是我在網上找的的xmlbeanfactory執行的時序圖:
spring 中載入xml配置檔案的方法
載入這些容器的配置檔案的xml有一下幾種常見的方法 1 引用資源 用xmlbeanfactory 不能實現多個檔案相互引用 從factory中獲取相應資源檔案中的bean,但是這種bean讀不到引用了其他檔案中的bean!注意 在2 3的載入方式中可以載入多個配置檔案,獲取到 abstractdao...
Spring中載入XML配置檔案的方法
載入這些容器的配置檔案的xml有以下幾種常見的方法 1 引用資源用xmlbeanfactory 不能實現多個檔案相互引用 beanfactory factory new xmlbeanfactory resource 從factory中獲取相應資源檔案中的bean,但是這種bean讀不到引用了其他檔...
spring 中載入xml配置檔案的方式
spring 中載入xml配置檔案的方式,好像有3種,xml是最常見的spring 應用系統配置源。spring中的幾種容器都支援使用xml裝配bean,包括 xmlbeanfactory 一 xmlbeanfactory 引用資源 beanfactory factory new xmlbeanfa...