一尘不染

如何在引导程序文件中正确设置不同的Spring配置文件(以使Spring Boot定位到不同的Cloud Config服务器)?

spring-boot

每个环境我们都有不同的配置服务器。每个spring
boot应用程序应针对其相应的配置服务器。我试图通过在bootstrap.properties文件中设置配置文件来实现此目的,例如:

spring.application.name=app-name
spring.cloud.config.uri=http://default-config-server.com

---
spring.profiles=dev
spring.cloud.config.uri=http://dev-config-server.com

---
spring.profiles=stage
spring.cloud.config.uri=http://stage-config-server.com

---
spring.profiles=prod
spring.cloud.config.uri=http://prod-config-server.com

然后,我设置了cla,-Dspring.profiles.active=dev但是加载的配置服务器始终是文件中的最后一个设置(即,在上述设置中将加载产品配置服务器,然后如果移除产品,则将加载阶段)。

是否可以为云配置服务器设置引导程序配置文件?我遵循了这个示例,但似乎无法正常工作。就其价值而言,这些配置文件非常适合加载正确的配置(即,如果dev配置文件处于活动状态,则将加载app-name-
dev.properties),但不会从正确的配置服务器中提取。


阅读 260

收藏
2020-05-30

共1个答案

一尘不染

在单个文件中指定不同的配置文件仅支持YAML文件,不适用于属性文件。对于属性文件,请指定一个特定的环境bootstrap-[profile].properties以从默认值覆盖属性bootstrap.properties

所以你的情况,你会得到4个文件bootstrap.propertiesbootstrap-prod.propertiesbootstrap- stage.propertiesbootstrap-dev.properties

但是,除此之外,您还只能提供默认值,bootstrap.properties并且在启动应用程序时通过将a传递给应用程序来覆盖属性-Dspring.cloud.config.uri=<desired- uri>

java -jar <your-app>.jar -Dspring.cloud.config.uri=<desired-url>

这将优先于默认配置值。

2020-05-30