1、微服务启动报错:
2019-05-06 15:10:31.436 INFO 20248 — [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
2019-05-06 15:10:32.533 INFO 20248 — [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Connect Timeout Exception on Url - http://localhost:8888. Will be trying the next url if available
2019-05-06 15:10:32.534 WARN 20248 — [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for “http://localhost:8888/reportmanagerserver/default”: Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect
2019-05-06 15:10:32.536 INFO 20248 — [ restartedMain] org.uniudc.bi.ReportManagerApplication : The following profiles are active: custom

错误很明显,报错显示这个client项目连接的server为默认的8888端口,并不是我设定的10000端口。
通过启动日志可以发现:服务还是去 默认端口8888取配置中心的文件;这是怎么回事呢。其实就是一个配置文件优先级的问题;SpringCloud里面有个“启动上下文”,主要是用于加载远端的配置,也就是加载ConfigServer里面的配置,默认加载顺序为:加载bootstrap.*里面的配置 --> 链接configserver,加载远程配置 --> 加载application.*里面的配置。
按照网上的解决方案,properties文件里添加下面这条配置:

eureka.client.serviceUrl.defaultZone=http://localhost:9999/eureka/

还是解决不了问题。
另外,我试着将application.properties和application-custom.properties文件名改为bootstrap.properties和bootstrap-custom.properties后,也解决不了问题。
最后,我在pom文件里添加下面这个依赖解决了问题。

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>

因此可以认为eureka.client.serviceUrl.defaultZone 配置不生效的原因应该是没有加这个maven依赖。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐