irpas技术客

Spring Cloud Config 启动报错: c.c.c.ConfigServicePropertySourceLocator : Could not l

未知 8115

使用到的模块:

配置刷新 ├── eureka-server -- eureka注册中心 ├── config-server -- 配置中心服务 └── config-client -- 获取配置的客户端服务

远程git的config配置:

问题重现

访问config-server 服务的自带point: http://localhost:8002/config/dev/master,如果能读出配置,说明config-server能拉取到git里的配置。

{"name":"config","profiles":["dev"],"label":"master","version":"af31c56497ab3ca4c54ba55b4ad6e2ed625ecfeb","state":null,"propertySources":[{"name":"https://gitee.com/bingbing-123456/spring-cloud-config.git/config-dev.yml","source":{"redis":"localhost"}}]}

但是在config-client添加eureka配置后,发现启动报错:

spring: cloud: config: profile: dev # 启动配置的后缀 label: master # 分支名称 name: config # 配置文件名称 discovery: enabled: true service-id: config-server 2021-04-15 11:10:35.216 WARN 12488 --- [on(9)-127.0.0.1] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/config/dev/master": Connection refuse

然后我就纳闷了,我没启动8888端口的应用啊,怎么还自己去调用这个地址呢??? 于是我下定决心去追溯一下 ConfigServicePropertySourceLocator 类,如下图: 发现在 locate(Environment environment) 方法里找到了这个url: 继续往里追根溯源到 ConfigClientProperties类的override方法, 可以发现该地址是通过ConfigClientProperties override = new ConfigClientProperties();初始化的。 最终找到了真凶:

根据debug找到源码里的 ConfigClientProperties类里初始化了

private String[] uri = new String[]{"http://localhost:8888"};

从源码里发现,在配合eureka使用时,如果不配置uri, 会默认地去找地址 : http://localhost:8888/config/dev/master

解决方式一

修改config-server的端口为8888启动, 然后重新启动config-client, 如果连接上了config-server,那么会出现如下提示如下字样:

Adding property source: file:/C:/Users/ADMINI~1/AppData/Local/Temp/config-repo-7221920321208699196/config-dev.yml

请求config-client, 可以发现请求到了远程git里的配置: 最终发现此版本的Spring Cloud Config Client 配合Eureka使用时,会强制让你连接到8888端口的config-server, 因此我们只需要在保证启动配置无误的情况下,修改config-server的端口为8888,就可以实现获取config-server里的配置了!!!

解决方式二

?? 在bootstrap.yml文件里添加uri配置, 不使用服务发现的方式。

spring: cloud: config: profile: dev # 启动配置的后缀 label: master # 分支名称 name: config # 配置文件名称 uri: http://116.62.146.90:8888 # discovery: # enabled: true # service-id: config-server


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Spring #Cloud #config #启动报错 #could #not