SpringCloud bootstrap.yml 和application.yml 加载原理

Spring Cloud 官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud.htmlhtml

 

一个Spring Cloud的操做是经过建立“bootstrap”context开始的,它是main application最上层的parent context。开箱机用,它负责载入来自于外部的配置信息(properties),同时在本地解码外部配置文件的properties。全部Spring应用程序都是由2个Context共享来自外部properties的环境Environment。 Bootstrap properties在被加载时具备最高的优先权,因此默认状况下bootstrap properties不会被本地配置覆盖。git

bootstrap context 使用不一样的方式定位外部配置信息,而不是像main application context那样,因此你可使用bootstrap.yml 代替 application.yml or application.properties, 最好将外部配置交给bootstrap,并与main context分开。spring

若是你的application在server端有任何特殊的配置,最好是将spring.application.name设置到bootstrap.yml内,由于bootstrap.yml 不会被本地配置所覆盖。
你也彻底能够经过设置系统属性(system properties)spring.cloud.bootstrap.enabled=false, 来禁用bootstrap process。

bootstrap

bootstrap.yml  和application.yml  均可以用来配置参数服务器

bootstrap.yml能够理解成系统级别的一些参数配置,这些参数通常是不会变更的app

application.yml 能够用来定义应用级别的,若是搭配spring-cloud-config使用 application.yml里面定义的文件能够实现动态替换加密

Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)以前加载,就像application.yml同样,可是用于应用程序上下文的引导阶段。它一般用于“使用Spring Cloud Config Server时,应在bootstrap.yml中指定spring.application.name和spring.cloud.config.server.git.uri”以及一些加密/解密信息。技术上,bootstrap.yml由父Spring ApplicationContext加载。父ApplicationContext被加载到使用application.yml的以前。server

例如,当使用Spring Cloud时,一般从服务器加载“real”配置数据。为了获取URL(和其余链接配置,如密码等),您须要一个较早的或“bootstrap”配置。所以,您将配置服务器属性放在bootstrap.yml中,该属性用于加载实际配置数据(一般覆盖application.yml [若是存在]中的内容)。htm

固然,在一些状况上不用那么区分这两个文件,你只须要使用application文件便可,把所有选项都写在这里,效果基本是一致的,在不考虑上面的加载顺序覆盖的问题上。

文档

相关文章
相关标签/搜索