无法从启动应用程序中的多个 yml 文件加载属性
Posted
技术标签:
【中文标题】无法从启动应用程序中的多个 yml 文件加载属性【英文标题】:Unable to load properties from multiple yml file in a boot app 【发布时间】:2021-01-24 02:47:58 【问题描述】:我有一个微服务,我想拥有一些依赖于环境的属性 所以我使用的是application.yml、application-dev.yml、application-int.yml等.....
在启动时,我通过spring.profiles.active=myprofile
和相关的applicaiton-myprofile.yml
与applicaiton.yml
一起加载。到目前为止一切正常。
但是现在我想将我的一些非特定于环境的属性分类到他们自己的业务模块中,所以 除了我的 application.yml applicaiton-.yml 我还想从在 spring ENVIRONMENT
中添加更多 yml 文件。所以我可以使用@ConfigurationProperties
创建正确的 BusinessConfigProperties 类。
为了实现这一点,我尝试在 spring.config.location 中添加这些 yml 文件名,如下所示
spring:
config:
name:
- some-props
- very-different-name-props
location:
- classpath:/config/*
我也提供了配置名称,我所有的 yml 文件都存在于 /config 文件夹中
但我仍然无法读取这些文件中提到的任何属性。
我可以通过使用org.yaml.snakeyaml.Yml
手动加载文件来克服这个问题,但是对于读取 YML 映射和实例化我的类来说,样板代码太多。应该有一种简单的方法可以通过 spring 实现这一点。
更新
我在上面更新为,
spring:
config:
location:
- classpath:classpath:/config/some-props.yml,classpath:/config/very-different-name-props.yml
但这也行不通
我没有使用配置文件,因为与上述文件一起,我已经拥有applicaiton-<profile>.yml
用于环境特定属性。我将通过 spring.profile.active
作为启动 jvm 参数中的环境名称。
另外我不想以 application-.yml
【问题讨论】:
这根本行不通,因为这不是定义要加载的其他属性的方法。使用--spring-config-location=
启动应用程序时,这些属性需要作为属性传入
【参考方案1】:
也许只是输入你的问题,应该是spring.profiles.active=myprofile
您可以尝试以下尝试加载多个文件的方法
spring:
config:
location: classpath:/config/some-props.yml,classpath:/config/some-Other-props.yml
spring:
profiles:
include:
- CustomPropertiesFile
你也可以参考这个https://youtu.be/0G9X-pTv_UU
http://roufid.com/load-multiple-configuration-files-different-directories-spring-boot/
【讨论】:
感谢我编辑了profileS
错字。但我不能使用配置文件包含解决方案。我的 YML 文件名不是 application-spring: config: location: classpath
也没有加载属性。以上是关于无法从启动应用程序中的多个 yml 文件加载属性的主要内容,如果未能解决你的问题,请参考以下文章
典型的 .yml 或 .xml 矩阵应如何查找 OpenCV 使用
Rails 遗留应用程序和 Ruby 2 错误:无法从文件类型 yml 加载翻译未知