我将 Spring Boot 与 Spring Cloud Config Client 结合使用来管理微服务的配置。此外,我有一个 Spring Cloud Config Server 来提供配置。
我的微服务旨在从 Spring Cloud Config Server 获取配置,但如果它不可用,它应该回退到使用程序参数作为默认值。然而,我面临的问题是程序参数覆盖了从 Spring Cloud Config Server 获取的配置。
示例:
微服务启动: java -jar microservice.jar --setting.parameter=1
微服务的application.yml
spring:
config:
import: optional:configserver:http://localhost:8880
微服务的 github 存储库中的远程 application.yml:
setting:
parameter: 2
结果: 微服务应用程序以setting.parameter=1开始。 如果我在没有程序参数的情况下启动应用程序,结果是setting.parameter=2
我认为cmd参数的spring boot优先级大于属性文件。所以这是预期的行为。由于 application.properties 值被视为环境变量,因此作为输入传递给 jar 的值具有更高的优先级,即以下属性:
java -jar microservice.jar --setting.parameter=1
优先级大于属性文件中存在的优先级或从配置服务器读取的优先级。