最近在配置nacos的时候发现,使用application.yml配置nacos。它会首先去本地的nacos,而我本地没有nacos,于是他就发了疯的链接我本地nacos🙂,打开远程nacos管理界面发现,程序已经注册上去了。

然后去springCloud官网【https://www.springcloud/spring-cloud-greenwich.html#_the_bootstrap_application_context】查询发现,Bootstrap应用程序上下文

Spring Cloud应用程序通过创建“ bootstrap ”上下文来运行,该上下文是主应用程序的父上下文。它负责从外部源加载配置属性,并负责解密本地外部配置文件中的属性。这两个上下文共享一个Environment,它是任何Spring应用程序的外部属性的来源。默认情况下,引导程序属性(不是bootstrap.properties,而是引导程序阶段加载的属性)具有较高的优先级,因此它们不能被本地配置覆盖。

引导上下文使用与主应用程序上下文不同的约定来定位外部配置。可以使用bootstrap.yml来代替application.yml(或.properties),而将引导程序和外部环境的外部配置很好地分开。

如果您的应用程序需要来自服务器的任何特定于应用程序的配置,则最好设置spring.application.name(在bootstrap.ymlapplication.yml中)。为了将属性spring.application.name用作应用程序的上下文ID,必须在bootstrap.[properties | yml]中进行设置。

如果要检索特定的配置文件配置,还应该在bootstrap.[properties | yml]中设置spring.profiles.active

您可以通过设置spring.cloud.bootstrap.enabled=false来完全禁用引导过程。

自己总结了下,也不知对不对,

bootstrap.yml(properties)用来在程序引导时执行,应用于更加早期配置信息读取。

eg:可以来配置application.yml中使用到的参数

application.yml(properties) 应用程序特有配置信息。

eg:可以用来配置后续各个模块中需使用的公共参数

bootstrap.yml 优先级高于 application.yml 加载

【如有错误,希望大佬们指正】

更多推荐

bootstrap与application区别和应用场景