SpringBoot中配置文件bootstrap和application的区别比较

大家都知道 Spring Boot 中有两种配置文件

  • bootstrap (.yml 或者 .properties)
  • application (.yml 或者 .properties)

Spring Cloud 的官方文档有关于它们的介绍

https://cloud.spring.io/spring-cloud-static/Greenwich.SR1/single/spring-cloud.html#_the_bootstrap_application_context

大概意思是

Spring Cloud有一个“引导上下文”的概念,这是主应用程序的父上下文。引导上下文负责从配置服务器加载配置属性,以及解密外部配置文件中的属性。和主应用程序加载application.(yml或.properties)中的属性不同,引导上下文加载bootstrap.中的属性。配置在bootstrap.*中的属性有更高的优先级,因此默认情况下它们不能被本地配置覆盖。

如果想禁用引导过程,可设置spring.cloud.bootstrap.enabled=false。

因此,可以对比总结出 application 和 bootstrap 配置文件的几个特性

  • boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载
  • boostrap 里面的属性不能被覆盖

bootstrap 和 application 的应用场景

application 配置文件主要用于 Spring Boot 项目的自动化配置
bootstrap 配置文件的应用场景:①使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息②一些固定的不能被覆盖的属性③一些加密/解密的场景

Spring Cloud 工程师也针对网友关于这个问题的提问进行了回答。

0