命令行中的server.port无法使用spring cloud config server和eureka server

时间:2017-01-03 06:27:31

标签: spring-boot spring-cloud netflix-eureka

我正在研究春天可​​以。我现在拥有的是spring cloud配置服务器和eureka服务器。

配置服务器代码

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

application.properties

spring.application.name=config-server
spring.cloud.config.server.git.uri=https://github.com/vincentwah/spring-cloud-config-repository/
server.port=7001

Eureka服务器代码

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

bootstrap.properties

spring.application.name=eureka-server
spring.cloud.config.uri=http://localhost:7001/

eureka-server的配置为https://github.com/vincentwah/spring-cloud-config-repository/blob/master/eureka-server.properties

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
server.port=1111

当我启动eureka服务器时,我想更改端口,所以我在命令下运行

java -jar target/eureka-server-0.0.1-SNAPSHOT.jar --server.port=1234

但是,服务器仍以端口1111

启动
2017-01-03 14:04:11.324  INFO 6352 --- [      Thread-10] c.n.e.r.PeerAwareInstanceRegistryImpl    : Changing status to UP
2017-01-03 14:04:11.339  INFO 6352 --- [      Thread-10] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2017-01-03 14:04:11.492  INFO 6352 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 1111 (http)
2017-01-03 14:04:11.493  INFO 6352 --- [           main] c.n.e.EurekaDiscoveryClientConfiguration : Updating port to 1111
2017-01-03 14:04:11.500  INFO 6352 --- [           main] com.example.EurekaServerApplication      : Started EurekaServerApplication in 27.532 seconds (JVM running for 29.515)

我认为我在命令行中没有使用--server.port。有没有人遇到同样的问题?

2 个答案:

答案 0 :(得分:5)

默认情况下,Spring Cloud Config会覆盖本地配置。它应该是真理的来源。您可以使用配置文件,因此端口未使用特定配置文件定义。如果不是真的需要,你也可以禁用配置客户端(例如在测试中)。

还有allow overrides的选项。

  

由您添加到您的应用程序的属性源   引导上下文通常是“远程的”(例如来自配置服务器),以及   默认情况下,除了命令外,它们不能在本地重写   线。如果要允许应用程序覆盖远程   具有自己的系统属性或配置文件的属性   远程属性源必须通过设置授予它权限   spring.cloud.config.allowOverride=true(设置此功能无效   本地)。一旦设置了该标志,就会有一些更细粒度的设置   控制与System相关的远程属性的位置   属性和应用程序的本地配置:   spring.cloud.config.overrideNone=true覆盖任何本地   财产来源,和   spring.cloud.config.overrideSystemProperties=false如果只是系统   properties和env vars应该覆盖远程设置,但不能   本地配置文件。

答案 1 :(得分:0)

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
server.port=1111
spring.cloud.config.allowOverride=true
spring.cloud.config.overrideNone=true
spring.cloud.config.overrideSystemProperties=false

这很有效。