SpringCloud Config - client连接server的设置写在application.yml, 导致属性无法解析

原因

Bootstrap.yml (bootstrap.properties) 是在application.yml (application.properties)之前加载的。它通常用于“使用SpringCloud Config Server时,应在bootstrap.yml中指定spring.application.name和spring.cloud.config.server.git.uri”以及一些加密/解密信息。

 

Spring Cloud会创建一个`Bootstrap Context`(由bootstrap.yml加载),作为Spring应用的`Application Context`(由application.yml加载)的父上下文。初始化的时候,`Bootstrap Context`负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的`Environment`。`Bootstrap`属性有高优先级,默认情况下,它们不会被本地配置覆盖。

 

例如,当使用SpringCloud Config时,通常从服务器加载“真正的”配置数据。为了获取URL(和其他连接配置,如密码等),您需要一个较早的或“bootstrap”配置。因此,您将配置服务器属性放在bootstrap.yml中,该属性用于加载实际配置数据(通常覆盖application.yml [如果存在]中的内容)。

 

问题描述

根据网上的各种教程说明,将config服务的地址写到application.properties中

spring.cloud.config.uri= http://localhost:8888/

config服务本地开启,项目正常启动,能读到远程配置
今天为了方便使用,将config服务部署到测试服务器并将配置文件改为:

spring.cloud.config.uri= http://192.168.1.222:8888/

奇迹在此发生,无论怎么启动日志打印出的远程文件服务都是http://localhost:8888/
完全懵逼状态,难道这货还有缓存.经过一系列的clean问题依旧
百度了一下 没有相关的信息
无奈的情况下,发挥我二货潜质,新建项目,指定地址,启动……..问题依旧
万般无奈的情况下点开源码,发现

SpringCloud Config - client连接server的设置写在application.yml, 导致属性无法解析

debug后发现 启动时 uri没有从application.properties中获取.
继续百度,发现 springboot的配置文件除了application.properties外还有一个叫bootstrap.properties的东东(问号脸)
新建bootstrap.properties文件,复制config配置到文件中,启动.问题解决
本着刨根问底的精神去查询了一下 两个文件的区别,请参考
https://www.cnblogs.com/EasonJim/p/7589546.html

 

三、高级使用场景

https://www.cnblogs.com/BlogNetSpace/p/8469033.html

 

参考文献

版权声明:本文为CSDN博主「lovemf0919」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lovmf0919/article/details/78584236

 

上一篇:通过conda和pip导出和创建虚拟环境环境


下一篇:使用playbook role创建httpd服务