背景
在项目的实际使用中,一个项目会对应多个配置文件,并且想着一个项目对应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