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

时间:2016-10-10 21:57:45

标签: java spring spring-boot spring-cloud spring-cloud-config

我有以下服务:

  1. Spring Cloud Config Server
  2. Eureka Discovery Service
  3. 活动服务(春季启动应用程序)
  4. 我使用“Config First”模式。这意味着我首先启动Config Server,然后启动Discovery Service。

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

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

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

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

    但是应用程序无法启动,说8081已经在使用中。似乎事件服务使用配置服务器中的配置,并且此配置优先于VM参数。但我认为它应该是副verca。

2 个答案:

答案 0 :(得分:4)

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

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

从命令行

指定属性的3种方法
  • 环境变量:$ server_port=8082 java -jar event-service.jar
  • 系统变量:{​​{1}}
  • 命令行参数:$ java -jar -Dserver.port=8082 event-service.jar

请注意,对于$ java -jar event-service.jar --server.port=8082environment variable将替换为dots

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

答案 1 :(得分:0)

您必须将客户端属性更改为spring.cloud.config.override-none=true,默认设置为false。根据文件:

  

标记表示当allowOverride为真时,外部属性应采用最低优先级,而不是覆盖任何优先级   现有属性源(包括本地配置文件)。默认为false。