SpringBoot配置文件的优先级顺序、加载顺序、bootstrap.yml与application.yml区别及说明

 更新时间:2024年09月22日 10:19:01   作者:沉梦听雨.  
在SpringBoot中,配置文件的优先级顺序是:application-{profile}.yml或.properties > application.yml或.properties > bootstrap.yml或.properties,{profile}代表不同环境,如dev、test、prod,加载顺序是先加载bootstrap文件

Spring Boot 配置文件

优先级顺序

在 Spring Boot 中,配置文件的优先级顺序是:

application-{profile}.ymlapplication-{profile}.properties) > application.ymlapplication.properties) > bootstrap.ymlbootstrap.properties)。

其中,{profile} 表示不同的环境配置,如 devtestprod 等。

优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

加载顺序

在 Spring Boot 中,配置文件的加载顺序是按照以下规则:

  1. bootstrap.yml 或 bootstrap.properties: 这是最先加载的配置文件,用于配置应用程序上下文的基础设施,例如外部配置源和加密/解密。
  2. application.yml 或 application.properties: 这是主配置文件,包含应用程序的常规配置。
  3. application-{profile}.yml 或 application-{profile}.properties: 针对不同的环境(profile)加载相应的配置文件。例如,application-dev.yml 用于开发环境,application-prod.yml 用于生产环境。

在加载配置文件时,Spring Boot 会按照上述顺序依次查找并加载相应的配置项。

当存在相同名称的配置项时,

后加载的配置文件会覆盖之前加载的相同键名的配置项。这种顺序保证了较高优先级的配置文件可以覆盖较低优先级的配置,实现了灵活的配置管理。

bootstrap.yml 和 application.yml 有什么区别?

bootstrap.ymlapplication.yml 都是 Spring Boot 项目中常用的配置文件。

它们之间的主要区别如下:

1.用途不同:

  • bootstrap.yml 文件主要用于配置 Spring Boot 应用程序的启动参数,例如数据库连接、服务器端口等。这些参数在应用程序启动时需要设置,因此将它们放在 bootstrap.yml 文件中。
  • application.yml 文件用于配置 Spring Boot 应用程序的全局参数,例如日志级别、缓存策略等。这些参数在应用程序运行时可以更改,但一旦更改,所有使用这些参数的地方都会受到影响,因此将它们放在 application.yml 文件中。

2.内容不同:

  • bootstrap.yml 文件通常包含一些硬编码的配置值,例如数据库连接 URL、服务器端口等。这些值在应用程序启动时需要设置,因此将它们放在 bootstrap.yml 文件中。
  • application.yml 文件通常包含一些可配置的值,例如日志级别、缓存策略等。这些值在应用程序运行时可以更改,但一旦更改,所有使用这些值的地方都会受到影响,因此将它们放在 application.yml 文件中。

3.顺序不同:

  • bootstrap.yml 文件在 application.yml 文件之前加载,因此在 application.yml 文件中定义的配置值会覆盖 bootstrap.yml 文件中相同的配置值。

总之,bootstrap.yml 文件主要用于配置应用程序的启动参数,而 application.yml 文件用于配置应用程序的全局参数。

在实际项目中,可以根据需要选择使用哪个文件或者同时使用两个文件。

Spring Boot 项目可能不会直接使用 bootstrap.yml,但是在 Spring Cloud 项目中会使用它来定义一些与 Spring Cloud 组件相关的额外配置,例如服务发现和配置服务器等。

实际应用场景

在实际项目中,通常有一些推荐的最佳实践,例如:

  • 数据库连接信息等启动时必需的配置项可能放在 bootstrap.yml
  • 应用程序级别的配置项、日志级别、缓存策略等放在 application.yml

但是,有些项目也可能不用 bootstrap.yml,而是采用 Nacos 配置中心或者命令行运行参数进行配置。

这种灵活性使得开发团队能够根据实际需求选择最适合项目的配置方式,从而更好地适应不同的环境和应用场景。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot启动失败的排查指南

    SpringBoot启动失败的排查指南

    本文详细介绍了SpringBoot项目项目手动部署项目时遇到服务启动失败的排查流程,包括从环境到代码的完整排查步骤,需要的朋友可以参考下
    2026-05-05
  • 教你怎么用IDEA快速生成注释文档

    教你怎么用IDEA快速生成注释文档

    这篇文章主要介绍了教你怎么用IDEA快速生成注释文档,文中有非常详细的代码示例,对正在学习IDEA操作的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Java使用mapstruct实现对象拷贝

    Java使用mapstruct实现对象拷贝

    MapStruct可以简化对象之间的映射,本文就来介绍一下Java使用mapstruct实现对象拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • Java 进阶必备之ssm框架全面整合

    Java 进阶必备之ssm框架全面整合

    SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层,使用spring MVC负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久化引擎
    2021-10-10
  • 详解springboot配置多个redis连接

    详解springboot配置多个redis连接

    Spring Boot为Redis, MongoDB, Elasticsearch, Solr和Gemfire提供自动配置。本文详细介绍了springboot配置多个redis连接,有兴趣的可以了解一下。
    2017-04-04
  • MyBatis完成CRUD 详细细节内容剖析

    MyBatis完成CRUD 详细细节内容剖析

    这篇文章主要介绍了MyBatis完成CRUD 详细细节内容剖析,本文通过图文示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-05-05
  • App登陆java后台处理和用户权限验证

    App登陆java后台处理和用户权限验证

    这篇文章主要为大家详细介绍了App登陆java后台处理和用户权限验证,感兴趣的朋友可以参考一下
    2016-06-06
  • Struts2学习教程之Action类如何访问WEB资源

    Struts2学习教程之Action类如何访问WEB资源

    这篇文章主要给大家介绍了关于Struts2学习教程之Action类如何访问WEB资源的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

    Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

    文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Service及测试示例,通过使用注解如@RedisHash、@Cacheable等,可以简化操作并提高性能,文章还提供了关键注解的说明和测试验证方法,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • 基于Java语言开发的一个高效的敏感词过滤工具

    基于Java语言开发的一个高效的敏感词过滤工具

    这篇文章主要为大家详细介绍了如何基于Java语言开发的一个高效的敏感词过滤工具,文中的示例代码简洁易懂,有需要的小伙伴可以参考一下
    2025-01-01

最新评论