泪伤荡的编程指南 泪伤荡的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
  • Spring

    • Spring基础小结
    • 聊聊Spring IoC 和 AOP
    • AOP实战
    • 元注解知识小结
    • SpringCache小记
    • 异步注解相关
  • SpringBoot

    • SpringBoot核心知识总结
    • 配置文件详解
      • 优先级顺序
      • 加载顺序
        • bootstrap.yml 和 application.yml 有什么区别?
      • 实际应用场景
      • 占位符的写法
      • 学习参考
    • SpringBoot3知识汇总
    • SpringBoot参数校验注解解析
    • SpringBoot读取Resource下文件的几种方式
  • Mybatis

    • Mybatis基础知识小结
    • Mybatis映射文件解析
    • 获取中文字符串首字母
  • 常用框架
  • SpringBoot
泪伤荡
2023-08-25
目录

配置文件详解

# 配置文件详解

# 优先级顺序

在 Spring Boot 中,配置文件的优先级顺序是:application-{profile}.yml(application-{profile}.properties) > application.yml(application.properties) > bootstrap.yml(bootstrap.properties)。其中,{profile} 表示不同的环境配置,如 dev、test、prod 等。

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

# 加载顺序

在 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.yml 和 application.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 配置中心或者命令行运行参数进行配置。这种灵活性使得开发团队能够根据实际需求选择最适合项目的配置方式,从而更好地适应不同的环境和应用场景。

# 占位符的写法

例如在 application.yml 里这样的一段配置:

spring:
  application:
    name: @artifactId@
  cloud:
    nacos:
      username: @nacos.username@
      password: @nacos.password@
1
2
3
4
5
6
7

解释:

在这里,@artifactId@ 是一个占位符,通常在 Maven 或 Gradle 构建项目时会被实际的项目名称替换。

具体的值在 pom.xml 中会有配置

如下所示:

                <!-- 环境标识,需要与配置文件的名称相对应 -->
                <profiles.active>dev</profiles.active>
                <nacos.username>nacos</nacos.username>
                <nacos.password>nacos</nacos.password>
1
2
3
4

# 学习参考

SpringBoot配置文件加载顺序_springboot配置加载顺序正确的是-CSDN博客 (opens new window)

上次更新: 2024/10/26 02:01:17
SpringBoot核心知识总结
SpringBoot3知识汇总

← SpringBoot核心知识总结 SpringBoot3知识汇总→

Theme by Vdoing | Copyright © 2024-2025 泪伤荡 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式