每个环境我们都有不同的配置服务器。每个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,但是加载的配置服务器始终是文件中的最后一个设置(即,将prod配置服务器加载到上述设置中,然后如果删除prod,则将加载stage)。

是否可以为云配置服务器设置 bootstrap 配置文件?我关注了this example,但似乎无法正常工作。就其值(value)而言,这些配置文件非常适合加载正确的配置(即,如果开发配置文件处于 Activity 状态,则将加载app-name-dev.properties),但不会从适当的配置服务器中提取。

最佳答案

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

因此,根据您的情况,您将获得4个文件bootstrap.propertiesbootstrap-prod.propertiesbootstrap-stage.propertiesbootstrap-dev.properties

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

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

这将优先于默认配置值。

07-24 09:46
查看更多