配置服务器代码
@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。有没有人遇到同样的问题?
答案 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
这很有效。