Spring Config Server 的配置会覆盖服务器端口 vm 参数

Ato*_*omx 3 java spring spring-boot spring-cloud spring-cloud-config

我有以下服务:

  1. Spring Cloud 配置服务器
  2. 尤里卡发现服务
  3. 事件服务(弹簧启动应用程序)

我使用“配置优先”模式。这意味着我首先启动配置服务器,然后启动发现服务。

然后我运行事件服务。它需要从 Config Server 进行配置。在配置中,我指定 server.port 属性等于 8081。

我看到我的事件服务正在发现服务中注册。

当我尝试再启动一个事件服务实例时,问题就出现了。要在不同的端口上运行它,我使用 -Dserver.port vm 参数。所以我的命令看起来像:

java -jar event-service.jar -Dserver.port=8082

但是应用程序启动失败,说8081已经在使用。事件服务似乎使用来自配置服务器的配置,并且此配置优先于 VM 参数。但我在想它应该是反之亦然。

ale*_*xbt 6

命令行参数的顺序是错误的:system variable必须在 jarfile 之前:

$ java -jar -Dserver.port=8082 event-service.jar
Run Code Online (Sandbox Code Playgroud)

从命令行指定属性的 3 种方法

  • 环境变量: $ server_port=8082 java -jar event-service.jar
  • 系统变量: $ java -jar -Dserver.port=8082 event-service.jar
  • 命令行参数: $ java -jar event-service.jar --server.port=8082

请注意,对于environment variabledots被替换为underscores

来源:https : //docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html