【发布时间】: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-
【问题讨论】:
-
这根本行不通,因为这不是定义要加载的其他属性的方法。使用
--spring-config-location=启动应用程序时,这些属性需要作为属性传入
标签: spring spring-boot yaml spring-environment