【问题标题】:Overriding spring config server configuration from command line从命令行覆盖spring config服务器配置
【发布时间】:2021-03-15 12:33:20
【问题描述】:

我有一个 spring 配置服务器在 localhost 的 8888 端口上运行。这是来自相关属性文件的 sn-p:

server.port=8085
ideal.connection.threshold.millis=600000
listener.port=3042
number.of.backlog.ports=1000

我正在尝试从命令行覆盖这些属性。我在 .jar 之前和之后都尝试过 -- 和 -D 变体,但无济于事。应用程序仍然从 spring 配置服务器中获取属性。

我尝试过的事情

java -Dspring.profiles.active=<profile_name> -Dlistener.port=3034 -Dserver.port=9096-Xmx2048m -jar listener-0.0.1-SNAPSHOT.jar 
java -Dspring.profiles.active=<profile_name> --listener.port=3034 --server.port=9096-Xmx2048m -jar listener-0.0.1-SNAPSHOT.jar 
java -Dspring.profiles.active=<profile_name> -Xmx2048m -jar listener-0.0.1-SNAPSHOT.jar --listener.port=3034 --server.port=9096
java -Dspring.profiles.active=<profile_name> -Xmx2048m -jar listener-0.0.1-SNAPSHOT.jar -Dlistener.port=3034 -Dserver.port=9096

上述方法都不起作用,实际上第二种方法导致

Unrecognized option: --listener.port=3034

应该如此。其他 3 个选项导致从 spring-config 服务器获取配置。

所以我的问题是,有没有办法覆盖 spring 配置服务器,如果有,覆盖 spring 配置服务器中的配置的正确方法是什么?

【问题讨论】:

  • 我从未声称它是。这些是 spring 配置服务器中特定于应用程序的属性。我正在尝试覆盖其中的几个,但它们不起作用。所以我正在寻找一种方法来覆盖 any 属性,否则一个真实的答案说这是不可能的。如果它让你更快乐,我会覆盖,比如说,ideal.connection.threshold.millis 或 number.of.backlog.ports。

标签: java spring spring-boot configuration


【解决方案1】:

使用 Spring Cloud Config 服务器时,远程配置会覆盖系统配置(即:命令行参数被来自配置服务器的远程配置替换)。

要替换此行为,请将spring.cloud.config.override-system-properties 添加到您的application.properties 中的false

【讨论】:

    【解决方案2】:

    这个问题有一个正确且被接受的答案,我只是想添加更多细节。

    Spring Cloud Config 官方文档here 相当混乱和误导。特别是,

    由 引导上下文通常是“远程的”(例如来自配置服务器),并且 默认情况下,它们不能在本地被覆盖,除了命令 行。

    很明显,配置服务器中的属性不能通过命令行覆盖,除非您明确设置了属性

    spring.cloud.config.override-system-properties 到相关属性文件中的truefalse。如果将其设置为false,则只有命令行、环境变量和系统属性可以覆盖这些属性。如果它设置为true,那么您的应用程序的本地配置文件也可以覆盖这些属性。

    因此,如果您的应用程序名称是 foo 并且活动配置文件是 bar,那么您的 foo-bar.properties 应该将 spring.cloud.config.override-system-properties 设置为 truefalse

    请注意,应用程序名称、配置文件和云配置(放入 bootstrap.* 文件中的内容)等属性当然可以从命令行覆盖。

    非常感谢this github issue,它记录了这个问题。

    【讨论】:

    猜你喜欢
    • 2017-02-19
    • 2015-05-08
    • 1970-01-01
    • 2019-05-28
    • 2016-08-31
    • 2020-01-20
    • 2015-07-13
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多