你的applicationContext.getResources(source)为什么只拿到了一个配置文件?

9 篇文章 0 订阅

通常我们在某些需求中需要到一个目录获取很多的配置文件,如果你已知配置文件名字,是可以做到一个个取的,但是如果我们不知道配置文件的名字和数量呢?

说一个场景,在模块化架构中,我们未来有多少个模块是无法预估的,但是每个模块都需要有自己模块内的错误码,并且未来还要配合做国际化,也会涉及到配置文件数量及名字的不确定性(虽然我们可能会确定一个命名规范)。我们期望通过一次性的获取配置文件读取,不想每建一个模块都去对应的写一个获取错误码文件的实现。

那就要说道一下applicationContext.getResources(source)这个方法了,它是可以在指定目录下批量获取配置文件的,并且可以通过规则来进行模糊匹配,我遇到一个问题,调用这个方法就是只能获取一个???WHY?

我的入参source= classpath:com/zeus/message/error_code*.properties

问题在哪呢?看一下源码:

最后这个方法会委托给PathMatchingResourcePatternResolver这个类来进行实现,看一下实现代码:

 

 看到就知道为什么了,classpath如果后面加了*就返回所有,没有加*就返回一个,坑爹的设置!

所以把地址改为source= classpath*:com/zeus/message/error_code*.properties就行了。

这个地址还支持模糊匹配,比如上门我是名字模糊匹配,以error_code开头的全部获取,还有可以支持深度的目录层级:

classpath*:com/zeus/message/*/error_code*.properties(message目录下支持再加一级任何名称的目录节点)

classpath*:com/zeus/message/**/error_code*.properties(message目录下支持再加任意级任何名称的目录节点)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Run_the_ant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值