spring boot 1.5.9.RELEASE
spring cloud Dalston.SR1
1.前言
昨天做了 spring cloud config 配置中心 获取存在git仓库的配置文件 ,提到了spring boot 读取配置文件优先级的情况,
如果是本地配置文件,那么优先级是 boostrop.properties > application.properties > application.yml
问题来了,从git 仓库获取的配置文件 ,不同名字的文件【可能是properties或yml】 ,如果其中有相同的字段但是对应的value不同,远程服务器调用这个字段,那么value会是多少?
事实上经过多次测试发现:
2.证明
(1)git仓库准备两个文件
gittest.properties
还有
gittest2.yml
(2)在配置中心application 文件配置 ,设置端口为100
配置中心端口100 验证能否从git获取文件
浏览器输入 http://localhost:100/master/gittest-1.properties
浏览器输入 http://localhost:100/master/gittest2-1.yml
显示可以获取
(3)配置一个 服务消费者,从配置中心获取数据 ,
具体怎么配置可以看我的另一篇随笔,这里就不多展示怎么配置了,
看一下application文件 ,端口为200
看一下 bootstrap文件,
看一下controller层逻辑
配置好了后200消费者后,
先启动提前准备的一个注册中心端口为7001,然后启动配置中心100,再启动消费者200
3.测试
(1)当前文件获取配置顺序
浏览器输入网址 http://localhost:200/getConfig?name=爱你
获取的是 gittest2.yml文件内容 ,换多个浏览器多次访问,都没有改变
(2)更换顺序,重启消费者端口200
当前文件获取配置顺序
浏览器输入网址 http://localhost:200/getConfig?name=我也爱你
获取的是 gittest.properties文件内容 ,换多个浏览器多次访问,都没有改变
4.结论
经过测试发现,在不同文件【可能是properties或者yml】,如果其中有相同的字段,那么左边的文件的这个字段的值会被右边文件的覆盖,不区分properties和yml优先级