Spring Cloud Config 不会覆盖程序参数

问题描述 投票:0回答:1

我将 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

spring-boot spring-cloud-config spring-cloud-config-server spring-cloud-config-client
1个回答
0
投票

我认为cmd参数的spring boot优先级大于属性文件。所以这是预期的行为。由于 application.properties 值被视为环境变量,因此作为输入传递给 jar 的值具有更高的优先级,即以下属性:

 java -jar microservice.jar --setting.parameter=1

优先级大于属性文件中存在的优先级或从配置服务器读取的优先级。

© www.soinside.com 2019 - 2024. All rights reserved.