在上一篇《spring framework 源码分析,从入口开始》我们知道了默认的配置文件路径和自定义配置文件路径,这篇我们介绍这些配置文件是如何加载的。
在AbstractApplicationContext的refresh()方法中通过层层调用,然后在XmlWebApplicationContext 的loadBeanDefinitions方法中,设置ResourceLoader为this,通过getConfigLoacations()获取配置文件路径。
依次遍历配置文件路径,因为resourceLoader类型是XmlWebApplicationContext,而XmlWebApplicationContext继承至ApplicationContext实现了ResourcePatternResolver的接口,所以如图会走if分支,然后通过resourceLoader.getResurece(location)方法把配置文件路径转换为Resource资源,最后解析Resouce,加载beans。
如何把路径转换为Resource资源?
spring-framework-reference/resources
相关测试文件
- /spring-context/src/test/java/org/springframework/context/support/ClassPathXmlApplicationContextTests.java
- /spring-webmvc/src/test/java/org/springframework/web/context/XmlWebApplicationContextTests.java
在下一篇我们将继续研究spring是如何解析这些配置文件,加载beans的。