你的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
    评论
applicationcontext.xml配置文件既可用于测试环境,也可用于非测试环境。因为在实际开发中,我们通常会使用不同的配置文件来分别应对测试和非测试环境的需求。 在测试环境下,我们希望能够模拟各种场景和条件,对系统进行全面的测试和验收,以确保系统的稳定性和可靠性。因此,在测试环境中,我们可能需要配置一些特殊的参数、模拟数据、测试工具等,以方便测试人员进行测试。 而在非测试环境中,系统需要真实地运行和提供正常的功能和服务。在这种情况下,我们需要的配置就是系统正常运行所需的配置,如数据库连接信息、日志级别、缓存策略等,以保证系统的高效性和可用性。 为了方便维护和管理,通常会使用两个独立的配置文件一个用于测试环境,一个用于非测试环境。这样,我们可以根据需要分别加载不同的配置文件,以满足测试和非测试环境的需求。 当然,有时候也可以在同一个配置文件中同时配置测试和非测试环境所需的参数,然后通过配置文件中的某个标识来判断当前是测试环境还是非测试环境,进而加载相应的配置。这种方式可以减少配置文件的数量,但需要在代码中进行判断和处理。 综上所述,applicationcontext.xml配置文件既可用于测试环境,也可用于非测试环境,具体的配置方式和加载方式可以根据需求和实际情况进行灵活调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Run_the_ant

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

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

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

打赏作者

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

抵扣说明:

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

余额充值