Spring源码 - 配置文件

  • 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真实路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值