springcloud 为啥增加bootstrap context的意义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud 为啥增加bootstrap context的意义相关的知识,希望对你有一定的参考价值。

参考技术A Spring云应用程序bootstrap context进行操作(bootstrap context是主应用程序的父上下文)。bootstrap context负责从外部源加载配置属性,并解密本地外部配置文件中的属性。这两个上下文共享一个环境,该环境是任何Spring应用程序外部属性的来源。默认情况下,bootstrap属性(不是bootstrap.properties而是引导阶段加载的属性)具有较高的优先级,因此不能被本地配置覆盖。

SpringCloudAlibaba项目配置迁移Nacos通过bootstrap.yml启动

参考技术A 我们要把本地的 application.yml 文件放到远程配置中心Nacos中,主要思想就是利用 bootstrap.yml 的优先加载,来指定配置文件的地址。

由于我们使用的SpringCloud框架,会覆盖SpringBoot对 bootstrap.yml 的优先加载,需要引入下面的依赖来解决。

./resources 目录下增加 bootstrap.yml

Nacos中增加配置

这时候你会看到你的控制台疯狂输出ClientWorker日志

网上查原因说是NacosServer和客户端使用的nacos-client版本不一致导致的,比较内容是否发生变化是比较config的md5值,如果版本不一样,有可能盐值不一样导致md5值不同,进而导致疯狂同步信息。我们的server使用的是2.0.2而client使用的是1.4.5。
解决办法:
1.上调log级别,眼不见为净,掩耳盗铃。
2.调整nacos版本一致。
3.git社区的解决方案,默认命名空间去掉配置public,也就是使用public空间的时候,不要配置namespace:public。原理还不太清楚,不过解决问题了。参考: https://github.com/alibaba/nacos/issues/3525

以上是关于springcloud 为啥增加bootstrap context的意义的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloudAlibaba项目配置迁移Nacos通过bootstrap.yml启动

SpringCloud + Zookeeper + Feign整合及Feign原理

为啥nginx环境下bootstrap中font-awesome图标显示不出来

SpringCloud------客户端服务适配配置中心

spring cloud - 我的 jar 外的 bootstrap.properties

bootstrap轮播 为啥我的轮播没有用