每个环境我们都有不同的配置服务器。每个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.properties
,bootstrap-prod.properties
,bootstrap-stage.properties
和bootstrap-dev.properties
。
但是,除此之外,您还只能提供默认的bootstrap.properties
,并且在启动应用程序时通过将-Dspring.cloud.config.uri=<desired-uri>
传递给应用程序来覆盖属性。
java -jar <your-app>.jar -Dspring.cloud.config.uri=<desired-url>
这将优先于默认配置值。