- properties加载
-
通过 path(文件名)、clazz(文件同路径) 封装 ClassPathResource
通过 ClassPathResource 继承 InputStreamSource 重写 getInputStream()
-
clazz.getResourcesAsStream(path) 获取到输入流is
-
底层api ClassLoader.getSystemResourceAsStream(filename)
-
Properties.load(is)
-
- xml加载
-
web.xml中配置文件(spring-*.xml)BeanDefinitionReader
AbstractBeanDefinitionReader 负责加载 loadBeanDefinitions()
PathMatchResourcePatternResolver.getResources(path) 获取 Resource[]
- path不是classpath*:开头 :往后路径不包含*或? —> classpath:/spring-dal.xml
截取path中文件名,封装 ClassPathResource(filename) —> ClassPathResource("/spring-dal.xml") - path不是classpath*:开头 :往后路径包含或? —> classpath:/spring-dal.xml、classpath:/spring/spring-dal*.xml
从头截取到最后一个/的路径,再重复获取resource —> classpath:/、classpath:/spring/
不是classpath*:开头 :往后路径不包含*或? 替换掉classpath: 封装ClassPathResource(filename) —> ClassPathResource("/")-加载不到、ClassPathResource("/spring/")-可以加载 - path是classpath*:开头 :往后路径包含或? —> classpath:/spring-dal*.xml
从头截取到最后一个/的路径,再重复获取resource —> classpath*: /
封装 UrlResource("/**/classes/") 初始化时解析系统中classpath真实路径 - classpath*:开头 :往后路径不包含或? —> classpath:/spring-dal.xml
替换掉classpath*: 查找所有resource —> /spring-dal.xml
封装 UrlResource("/**/classes/spring-dal.xml") 初始化时解析系统中classpath真实路径
- path不是classpath*:开头 :往后路径不包含*或? —> classpath:/spring-dal.xml
-
Spring源码 - 配置文件
最新推荐文章于 2024-03-16 00:22:53 发布