背景

在项目的实际使用中,一个项目会对应多个配置文件,并且想着一个项目对应git仓库一个子目录,这样看起来比把所有项目的配置文件都放一个目录下更加清析,也没有那么乱。按照这个思路就去查阅相关资料(官网、相关书籍)

在查看《Spring Cloud微服务实战》– 翟永超 一书中,有这样一段话
这里写图片描述
没错,要的就是这个,一阵暗喜,下面请看我config client 、 config server 与 git repository 的配置
config server
这里写图片描述

config clent
这里写图片描述

注:config 客户端在没有 spring.cloud.config.name属性的时候,服务端{application} 获取的是客户端
spring.application.name的值,否则,获取的是 spring.cloud.config.name的值。
1)、当没有spring.cloud.config.name时,客户端获取的是spring.application.name 所对应的git库中的文件,并且只能
获取一个文件,
2)、当一个项目中有需求要获取多个文件时,就需要用到spring.cloud.config.name这个属性,以逗号分割

git repository
这里写图片描述
上述准备工作OK以后,迫不及待,先户动 Eureka——》config server启动成功——》config clent启动失败,
获取属性失败null。为什么?为什么??为什么???
开始各种资料各种查,发现网上相关说明还是比较少的,几乎没有这样的问题与解决方案,一天后,没办法了,看源码!
开始跟源码,终于有所发现。
org.springframework.cloud.config.server.support.AbstractScmAccessor在这个类中有getSearchLocations这个方法,
看名字,应该是获取要查找的路径:
这里写图片描述

这里写图片描述
也许大家不明白是什么意思,但是我已经发现问题所在了,按我上面的配置方式,它是找不到git资源文件的。后来config server、config client 我分别做了以下的修改
config server
这里写图片描述

config client
这里写图片描述

然后启动 Eureka——》config server 启动成功 ——》config client 启动成功
:)
所贴的源码只是冰山一角,因为只是为了解决这个问题,其他的就不多说了,总之,问题是解决了,特此记录下,同时也希望能够帮到有相通需求的人。
虽然spring cloud 是微服务框架的一个综合的解决方案,但是官方或者相关书籍的文档,大部分只是个引子,实际项目运用中还是有待探索的地方,大家有什么问题下方留言吧,共同探讨,共同进步。


参考文献

1: http://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.2.3.RELEASE/
2: 《spring cloud微服务实战》- 翟永超(著)
3: http://blog.csdn.net/weixin_35022258/article/details/79019033

Logo

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

更多推荐