SpringBoot配置文件bootstrap和application区别及说明
作者:有WiFi就好说
SpringBoot配置文件bootstrap和application区别
springboot支持的配置类型有两种四个bootsrap application
Yml文件:
- bootstrap.yaml(bootstrap.yml)
- application.yaml(application.yml)
properties属性文件:
- bootstrap.properties
- application.properties
bootstrap和application的区别
1.加载顺序的区别:
bootstrap配置文件比application配置文件优先加载,bootstrap是由Spring父上下文(父ApplicationContext)加载,application是由Spring子上下文加载。
2.优先级的区别:
bootstrap里的属性不能被覆盖,如果bootstrap和application两种类型的文件同时存在,是以bootstrap配置文件为主
3.使用场景:
bootstrap主要用于配置系统级别的一些参数
- 一些固定的,不能被覆盖的参数
- 当你使用了Spring Cloud Config配置中心时,这时需要在boostrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息。
application用于配置一些应用级别的参数
- 第三方数据源的配置
- rabbitmq,redis的配置
bootstrap与application对比分析
用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件
- bootstrap (.yml 或者 .properties)
- application (.yml 或者 .properties)
为什么会有这两种配置文件呢?大家都清楚它们的区别和具体使用场景吗?
bootstrap/ application的区别
特意去翻了下 Spring Boot 的官方文档,没有找到关于这两种文件的具体定义,然后再翻了下 Spring Cloud 的官方文档找到了它们的区别。
认真阅读了下文档,原文大概意思是这样。
Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application, bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。
bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。
这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。
bootstrap 里面的属性会优先加载,它们默认也不能被本地相同配置覆盖。
因此,对比 application 配置文件,bootstrap 配置文件具有以下几个特性。
- boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载
- boostrap 里面的属性不能被覆盖
bootstrap/ application的应用场景
application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件有以下几个应用场景。
- 1.使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
- 2.一些固定的不能被覆盖的属性
- 3.一些加密/解密的场景;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。