本文共 1358 字,大约阅读时间需要 4 分钟。
问题描述:spring cloud 远程仓库配置文件(yml或properties)中有server.port参数就无法访问,这是一个大坑吗?
1.远程仓库文件:
2.ms-config-client的配置:
application.yml
server: port: 8010
bootstrap.yml
spring: cloud: config: uri: http://localhost:8009 profile: pre label: master # 当configserver的后端存储是Git时,默认就是master application: name: application
3.将ms-config-server、ms-config-client的两个微服务启动起来:
4.访问:
5.将application-pre.yml改为application-pre.properties文件
6.再次重启ms-config-client微服务,然后访问服务:虽然能够访问,但是访问的spring.application.name这个参数不对,不是远程仓库的ms-config-server-pre,而是本地的spring.application.name=application(见第二步),这是为何呢?猜测应该是远端获取不到,获取本地的参数
7.修改client的程序,将端口参数写获取打印出来:
8.再次重启ms-config-client微服务,然后访问服务:,spring.application.name和application,server.port 读取的都是本地配置文件ms-config-client中的配置。
9.将application-pre.properties内容修改为键值对形式:
10.再次重启ms-config-client微服务,然后访问服务:,无法访问:
11.将application-pre.properties内容server.port改为server.porte:
12.再次重启ms-config-client微服务,然后访问服务:,可以看到端口号还是读取本地的配置。
13.将仓库的application-pre.properties改为application-pre.yml,同时内容也改为层次结构
14..再次重启ms-config-client微服务,然后访问服务:, 还是无法访问
15.将文件中的 将application-pre.properties内容server.port改为server.porte:
16..再次重启ms-config-client微服务,然后访问服务:,端口能访问,但是访问的是本地的配置文件。
结论是:当远程仓库中的配置文件,不管是properties格式还是yml格式,只要里面配置server.port有这个参数,client无法访问到,当server.port改为其他名称,如server.porte,微服务client则能访问到,但是访问的是本地server.port配置的值8010。这是为什么呢?
奶奶的,不明白怎么回事,有水明白,告知一声。
转载地址:http://gxtgi.baihongyu.com/