Spring Boot 项目中application.yml 和 bootstrap.yml 文件的区别

SpringBoot(三)项目配置 SpringBoot(三)项目配置(yml、properties) 阅读详情
AI摘要

本文介绍了Spring Boot项目中application.yml和bootstrap.yml文件的区别。二者在加载顺序上,bootstrap.yml先于application.yml;用途上,前者用于引导和外部化配置,后者用于应用通用配置;优先级上,前者更高;配置来源和适用场景也各有不同。还提到配置覆盖规则及默认位置等信息。

application.yml 和 bootstrap.yml 文件都是 Spring Boot 项目中用于配置应用程序的 YAML 或 Properties 文件,但它们在加载顺序、用途和优先级上存在关键的区别。

核心区别概览:

特性bootstrap.yml / bootstrap.propertiesapplication.yml / application.properties
加载时机更早 (Bootstrap Context)较晚 (Application Context)
用途引导引导 (Bootstrapping), 外部化配置应用程序通用配置
上下文Bootstrap ContextApplication Context
优先级更高 (在 Bootstrap Context 中)较低 (在 Application Context 中)
配置来源外部配置 (Config Server, Nacos, etc.)应用自身配置 (本地文件, 命令行, 环境变量)
适用场景配置中心连接、共享配置、应用名、Profile应用通用配置、Bean 定义、业务逻辑配置
配置覆盖application.yml 覆盖 bootstrap.yml命令行参数、环境变量等覆盖 application.yml
默认位置src/main/resources/src/main/resources/
是否必须存在可选可选 (但通常存在)

详细解释和区别:

1. 加载时机 (Loading Order):

  • bootstrap.yml / bootstrap.properties (Bootstrap Context): 在 Spring Boot 应用程序启动的非常早期阶段加载。 这是通过 Bootstrap Context 实现的,它是一个特殊的父级 Spring 上下文,在主 Application Context 之前创建。
  • application.yml / application.properties (Application Context): 在 bootstrap.yml 加载之后,在 Application Context 初始化时加载。 这是 Spring Boot 应用的主上下文。

理解 Bootstrap Context 和 Application Context:

你可以将 Bootstrap Context 理解为 Spring Boot 启动的引导阶段,它负责初始化一些基础且关键的配置,例如:

  • 配置 Spring Cloud Config Client 或 Nacos Config Client 的连接信息: Bootstrap Context 需要先知道如何连接配置中心,才能加载外部化配置。
  • 加载共享配置: 在多个应用之间共享的配置通常需要在 Bootstrap Context 中加载,以便在应用启动的早期阶段就可用。
  • 设置 spring.application.name 和 spring.profiles.active 等基础属性: 这些属性通常需要在 Bootstrap Context 中确定,以便后续的配置加载和应用初始化能够正确进行。

Application Context 则是 Spring Boot 应用的主应用上下文,负责加载和管理应用程序中的所有 Bean、处理请求、执行业务逻辑等。 application.yml 主要用于配置应用程序自身的通用设置。

2. 用途 (Purpose):

  • bootstrap.yml / bootstrap.properties: 引导引导 (Bootstrapping) 和 外部化配置:
    • 配置 Spring Cloud Config Client 或 Nacos Config Client: 例如 spring.cloud.config.uri 或 spring.cloud.nacos.config.server-addr 等配置。
    • 加载共享配置 (sharedConfigs): 使用 Spring Cloud Alibaba Nacos Config 的 sharedConfigs 功能时,需要在 bootstrap.yml 中配置。
    • 配置应用程序名称 (spring.application.name): 通常在 bootstrap.yml 中设置,用于标识应用,方便配置中心识别。
    • 激活 Profile (spring.profiles.active): 在 bootstrap.yml 中激活 Profile,可以影响后续的配置加载。
    • 其他需要在应用启动早期就加载的配置: 例如,一些自定义的 Bootstrap 监听器或初始化器需要的配置。
  • application.yml / application.properties: 应用程序通用配置:
    • 应用程序自身的通用配置: 例如,端口号、数据源连接信息 (如果不是共享的)、日志级别、国际化配置、Thymeleaf 模板配置、Spring MVC 配置、Bean 的定义等。
    • 业务逻辑相关的配置: 例如,一些业务开关、参数配置等。
    • 大部分应用程序的配置都应该放在 application.yml 中。

3. 上下文 (Context):

  • bootstrap.yml / bootstrap.properties: Bootstrap Context
  • application.yml / application.properties: Application Context

这意味着 bootstrap.yml 中的配置主要作用于 Bootstrap Context,而 application.yml 中的配置作用于 Application Context。 Bootstrap Context 的配置会影响 Application Context 的创建和初始化。

4. 优先级 (Priority):

  • bootstrap.yml / bootstrap.properties 的优先级更高 (在 Bootstrap Context 中): Bootstrap Context 的配置会优先加载,并影响 Application Context 的创建。
  • application.yml / application.properties 的优先级较低 (在 Application Context 中): Application Context 的配置在 Bootstrap Context 之后加载。

5. 配置来源 (Configuration Sources):

  • bootstrap.yml / bootstrap.properties: 倾向于配置外部配置来源**,例如 Spring Cloud Config Server, Nacos Config Server 等。 也用于配置一些需要在引导阶段就确定的基础属性。
  • application.yml / application.properties: 主要用于配置应用自身**的配置,通常来源于本地文件系统、命令行参数、环境变量等。

6. 适用场景 (Use Cases):

  • bootstrap.yml / bootstrap.properties: 适用于:
    • 配置 Spring Cloud Config 或 Nacos Config Client 连接信息。
    • 配置 sharedConfigs (Nacos Config)。
    • 设置 spring.application.name 和 spring.profiles.active。
    • 配置需要在 Bootstrap Context 中使用的属性。
  • application.yml / application.properties: 适用于:
    • 配置应用程序的通用设置。
    • 定义 Bean。
    • 配置业务逻辑相关的参数。
    • 大部分应用程序的配置。

7. 配置覆盖 (Configuration Overriding):

  • application.yml 中的配置会覆盖 bootstrap.yml 中相同属性的配置。 这是因为 application.yml 在 bootstrap.yml 之后加载。
  • 命令行参数、环境变量等 可以进一步覆盖 application.yml 和 bootstrap.yml 中的配置。 Spring Boot 的配置优先级顺序是:
    1. 命令行参数
    2. 环境变量
    3. application.yml / application.properties (profile-specific 和 default)
    4. bootstrap.yml / bootstrap.properties (profile-specific 和 default)
    5. 默认配置 (Spring Boot 框架内部的默认值)

8. 默认位置 (Default Location):

  • application.yml 和 bootstrap.yml 的默认位置都是 src/main/resources/ 目录下。

9. 是否必须存在 (Required or Optional):

  • application.yml 和 bootstrap.yml 都不是必须存在的。 Spring Boot 应用在没有这些配置文件的情况下也可以启动,它会使用默认配置。
  • 然而,在实际开发中,为了进行各种自定义配置,application.yml (或 application.properties) 通常是必需存在的。 bootstrap.yml (或 bootstrap.properties) 则在需要使用 Spring Cloud Config 或 Nacos Config 等外部化配置管理时才常用。

总结:

  • 如果你不需要使用 Spring Cloud Config 或 Nacos Config 等外部化配置管理,那么你可能只需要 application.yml (或 application.properties) 文件。 大部分应用程序的配置都放在 application.yml 中即可。
  • 如果你需要使用 Spring Cloud Config 或 Nacos Config 等外部化配置管理,或者需要在应用启动的早期阶段加载一些关键配置 (例如共享配置、应用名、Profile 等),那么你就需要使用 bootstrap.yml (或 bootstrap.properties) 文件。 bootstrap.yml 主要用于配置引导阶段的配置,以及外部化配置的连接信息和共享配置。

简单记忆口诀:

  • Bootstrap 先行,Application 后续: bootstrap.yml 先加载,application.yml 后加载。
  • Bootstrap 引导,Application 应用: bootstrap.yml 负责引导启动,application.yml 负责应用配置。
  • Bootstrap 外部,Application 自身: bootstrap.yml 配置外部配置,application.yml 配置自身应用。
Spring Cloud配置application.yml与bootstrap.yml区别及多profile配置 | Spring Cloud 6 `Spring Cloud` 构建于 `Spring Boot` 之上,在 `Spring Boot` 中有两种上下文,一种是 `bootstrap`,另外一种是 `application`。 阅读详情

相关推荐

SpringBoot支持bootstrap.yml/bootstrap.properties配置文件,需要导入spring-cloud-starter-bootstrap依赖

2、spring cloud starter alibaba nacos config,引用这个配置中心的依赖后,需要使用bootstrap.yml或bootstrap.properties 作为中转配置文件。3、不同类型配置文件读取优先级:bootstrap.yml/bootstrap.properties > application.yml/application.properties。1、导入依赖后,还需要开启 spring.cloud.bootstrap.enabled=true。

hkl_Forever的博客 6432

bootstrap.yml与application.yml详解

bootstrap.yml(bootstrap.properties)用来在程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等 application.yml(application.properties)应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

yangzhihua的专栏 1万+

【保姆级教程/代码】GNSS反演大气可降水量(Precipitable Water Vapor, PWV)

GPS精密单点定位(PPP)是一种采用精密卫星星历和卫星钟差进行非差单点定位的方法,在观测过程中采用双频载波相位观测法以确保高精度定位精度。本文利用PPP技术来求解天顶对流层延迟(zenith tropospheric delay,ZTD)。ZTD由湿延迟(ZWD)和干延迟(ZHD)组成,其中占比90%的ZHD与地面测站高程、大气压和测站纬度等参数有良好的相关性,可以通过Saastamoinen模型精确求出;

weixin_43910227的博客 2923

springboot 获取application参数_SpringCloud微服务之Config:获取配置中心配置

前面已经完成了配置中心微服务的搭建,下面我们就需要改造一下用户微服务user-service,配置文件信息不再由微服务项目提供,而是从配置中心获取。如下对user-service工程进行改造。添加依赖在user-service模块中,添加如下依赖:org.springframework.cloudspring-cloud-starter-config修改配置删除user-service模...

weixin_39805539的博客 1116

【网格生成】Gmsh快速入门教程 --1.图形化界面使用

初探 Gmsh软件的主界面如下图所示。通过点击菜单“File” -> "Open"可选择打开已经存在的几何模型或网格文件,初次使用可选择tutorial目录下的t1.geo文件。打开后效果如图所示,t1.geo描述的是一个长方体。 接下来依次尝试左侧菜单栏的功能:Geometry(几何)、Mesh(求解器)。Solver模块需依赖外置求解器,不在本文介绍范围内。 Geometry 该菜单下是与几何相关的功能,如新增一个点/面、体,移动一个体等,具体功能很多可以在后续使用中逐渐尝试学习。本文仅介绍几个

DJ_xiaoming的博客 1万+

Fiddler everywhere的一些基础操作

网上能搜到的Fiddler everywhere使用教程太少,于是我整理了一些自己实操成功的内容,包括Fiddler everywhere的Mock测试、弱网测试等基础操作,后续还会持续更新。操作系统:macOS使用工具:Fiddler everywhere 5.10.0本文简单介绍了使用Fiddler everywhere进行的Mock测试和弱网测试,而Fiddler everywhere提供了更多的其他实用的功能,我会在后期进行一个持续的学习和更新。

weixin_44346646的博客 2478

在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别

在 Spring Boot 项目中,和是两个常用的配置文件,它们的作用和加载顺序有所不同。

qqnbsp的博客 2129

保姆级教程:在Davinci Configurator里配置BswM的ECU状态机(附状态切换流程图)

本文提供了一份详细的AUTOSAR BswM模块配置指南,通过Davinci Configurator工具实现ECU状态机的构建与管理。内容涵盖从模式请求端口创建到状态切换规则定义的全流程,特别针对Ecu State Handling进行了深入解析,并附有状态切换流程图,帮助汽车电子工程师高效完成ECU状态管理配置。

weixin_28366475的博客 410

Spring Boot application.yml 和 bootstrap.yml

https://www.cnblogs.com/BlogNetSpace/p/8469033.html bootstrap与application 1.加载顺序 这里主要是说明application和bootstrap的加载顺序。 bootstrap.yml(bootstrap.properties)先加载 application.yml(application.properties)后加载 bo...

u013217730的博客 310

【数据集5】土地利用类型数量预测数据LUH2

简介土地利用类型数量预测数据LUH2

WW、forever的博客 4546

【ATC/DTC方法第一期】经典平均/昼夜温度周期ATC/DTC方法介绍(含Python代码实现)

【ATC/DTC方法第一期】经典平均/昼夜温度周期ATC/DTC方法介绍(含Python代码实现)

WW、forever的博客 484

Springboot中application.yml、application.properties和bootStrap.yml的加载顺序

SpringApplication位于项目根目录,所以所有得代码要和SpringApplication所在目录平级或下一级

wounler的博客 3649

CloudCompare 二次开发(36)——非均匀体素降采样

使用CloudCompare与PCL编程实现的非均匀体素降采样。

点云侠的博客 745

Spring——Springcloud/Spring项目加载文件配置顺序

本文详细阐述了 Spring Cloud 和 Spring Boot 项目中配置文件的加载顺序。Spring Cloud 项目因引入 bootstrap.yml 和远程配置中心,加载顺序更复杂。其顺序依次为命令行参数、SPRING_APPLICATION_JSON、系统属性、操作系统环境变量、远程配置中心、bootstrap.yml、本地 application.yml(按特定顺序)、jar 包内 application.yml、@PropertySource 注解配置文件和默认配置。

庄小焱 1270

华为od 面试八股文_C++_01_含答案

华为od 面试八股文_C++_01_含答案

MISAYAONE的博客 5588

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringBoot的配置文件bootstrap与application的作用以及区别

1、首先是新建的默认自带application.properties,问题是有些重复性的共同前缀需要从头重复写。 2、

yrsg666的博客 605

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IDEA中微服务bootstrap.yml文件不生效的问题,2种解决方案

1.直接使用第一种方案2.两种方案一起使用先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习。..

m0_67391120的博客 7692

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Spring Boot中application.yml与bootstrap.yml的区别

说明:其实yml和properties文件是一样的原理,主要是说明application和bootstrap的加载顺序。且一个项目上要么yml或者properties,二选一的存在。 Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加载,就像application.yml一样,但是用于应

mark's technic world 592

Spring Boot中application.yml与bootstrap.yml的区别(转)

说明:其实yml和properties文件是一样的原理,主要是说明application和bootstrap的加载顺序。且一个项目上要么yml或者properties,二选一的存在。 Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加载,就像app...

weixin_34185364的博客 128

Spring Boot中application.yml与bootstrap.yml的区别(转载)

说明:其实yml和properties文件是一样的原理,主要是说明application和bootstrap的加载顺序。且一个项目上要么yml或者properties,二选一的存在。 Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加载,就像application.yml一样,但是用于应用程...

weixin_34273479的博客 402

创建基于Spring boot项目的最小项目

一、引言 一般的开发都是在原有的项目基础上进行,而且打包发布都是基于公司内部系统。因此,如何从无到有创建一个项目,并打包部署到指定机器上,是一项必须补充和掌握的知识。 下面讲解的是基于mvn构建的Spring boot项目。 二、知识点 2.1 pom文件编写 2.1.1 最小的pom配置 1、根据环境生效不同的配置 <?xml version="1.0" encoding=...

bxw1992的博客 567

第2.1章API网关

配置并不是我的原创,我是根据https://gitee.com/geek_qi/ace-security/tree/master工程做的笔记 1 maven配置 1.1 lombok 有时为了偷懒,使用了lombok,以前并不推荐,现在写springboot工程,发现很多人比较热衷。 比如Spring Boot下的lombok安装以及使用简介 &lt;dependency&gt; ...

warrah 南极狼 247

springboot3整合nacos实现注册中心和配置中心(详细入门)_springboot3 nacos

这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!!```这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!![外链图片转存中…(img-KKyYTj0I-1714461361419)]本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录。

2401_84002482的博客 1545

【Spring Cloud Alibaba】nacos配置中心实践

一、项目搭建 在nacos注册中心实践,已经安装好了nacos,并且并且成功的将项目注册到了nacos中。接下来在实践下nacos做配置中心,首先来构建项目。 1、POM文件导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

隐市高手 480
上一篇: MyBatis 的配置对象 Configuration 作用详解
下一篇: MyBatis 类型处理器TypeHandler作用
冰糖心书房
博客等级 码龄15年 6014粉丝 690原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰糖心书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值