在上一篇《spring framework 源碼分析拗踢,從入口開(kāi)始》我們知道了默認(rèn)的配置文件路徑和自定義配置文件路徑,這篇我們介紹這些配置文件是如何加載的向臀。
在AbstractApplicationContext的refresh()方法中通過(guò)層層調(diào)用巢墅,然后在XmlWebApplicationContext 的loadBeanDefinitions方法中,設(shè)置ResourceLoader為this,通過(guò)getConfigLoacations()獲取配置文件路徑券膀。loadBeanDefinitions.png
ResourcePatternResolver
ApplicationContext
依次遍歷配置文件路徑君纫,因?yàn)閞esourceLoader類型是XmlWebApplicationContext,而XmlWebApplicationContext繼承至ApplicationContext實(shí)現(xiàn)了ResourcePatternResolver的接口芹彬,所以如圖會(huì)走if分支蓄髓,然后通過(guò)resourceLoader.getResurece(location)方法把配置文件路徑轉(zhuǎn)換為Resource資源,最后解析Resouce,加載beans舒帮。
如何把路徑轉(zhuǎn)換為Resource資源会喝?
spring-framework-reference/resources
相關(guān)測(cè)試文件
- /spring-context/src/test/java/org/springframework/context/support/ClassPathXmlApplicationContextTests.java
- /spring-webmvc/src/test/java/org/springframework/web/context/XmlWebApplicationContextTests.java
在下一篇我們將繼續(xù)研究spring是如何解析這些配置文件陡叠,加載beans的。