application.yml和bootstrap.yml

参考文章 https://blog.csdn.net/Mrxiao_bo/article/details/134459827?fromshare=blogdetail\&sharetype=blogdetail\&sharerId=134459827\&sharerefer=PC\&sharesource=qq_46023827\&sharefrom=from_link

在Java的Spring Boot和Spring Cloud应用中,application.yml和bootstrap.yml是两个重要的配置文件,它们各自承担着不同的配置职责。

application.yml

复制代码
作用:application.yml文件主要用于配置应用程序级别的参数,这些参数通常是应用程序特有的,用于定义后续各个模块中需使用的公共参数等。它提供了简便的方式来配置Spring Boot应用程序的各种组件,如数据源、数据库、缓存、邮件服务等。

特点:
    支持YAML格式,这是一种直观的数据序列化格式,支持列表、映射、字符串、整数、浮点数等数据结构。
    允许配置应用程序的各种属性,如服务器端口、数据库连接、缓存策略等。
    支持不同环境的配置,可以为开发环境、测试环境和生产环境创建不同的配置文件。
    当与Spring Cloud Config结合使用时,application.yml里面定义的文件可以实现动态替换。

bootstrap.yml

复制代码
作用:bootstrap.yml文件主要用于应用程序上下文的引导阶段,加载应用程序上下文之前的外部配置文件。这些配置通常在应用程序启动的早期阶段就需要用到,如连接到Spring Cloud Config Server的配置、加密/解密信息、连接到外部数据库的配置等。

特点:
    加载顺序优先于application.yml,这意味着bootstrap.yml中的配置将首先被加载。
    用于定义系统级别的参数配置,这些参数通常是固定或较少变动的,如数据库连接、消息队列连接等。
    与Spring Cloud Config结合使用时,bootstrap.yml中配置的信息(如Config Server的地址)可以帮助应用程序从Config Server加载动态的配置信息,实现配置的外部化和集中管理。
    一旦bootstrap.yml被加载,其内容通常不会被覆盖,具有较高的优先级。

加载顺序与覆盖规则

复制代码
在同一目录下,bootstrap.yml先加载,application.yml后加载。
如果application.yml与bootstrap.yml存在相同的配置项,bootstrap.yml中定义的属性将优先生效。但是,application.yml里面的内容可以动态替换(在Spring Cloud Config等场景下)。

典型应用场景

复制代码
当使用Spring Cloud Config Server(或Spring Cloud Alibaba Nacos)配置中心时,通常需要将spring.application.name和配置中心相关的URI(如spring.cloud.config.server.git.uri或spring.cloud.nacos.config)配置在bootstrap.yml中,以便在应用程序启动时首先加载这些配置,从而连接到外部的配置中心并加载动态的配置信息。

综上所述,application.yml和bootstrap.yml在Java的Spring Boot和Spring Cloud应用中各自扮演着重要的角色,它们共同协作以确保应用程序能够正确、高效地启动和运行。

相关推荐
pianmian13 小时前
类(JavaBean类)和对象
java
我叫小白菜4 小时前
【Java_EE】单例模式、阻塞队列、线程池、定时器
java·开发语言
Albert Edison4 小时前
【最新版】IntelliJ IDEA 2025 创建 SpringBoot 项目
java·spring boot·intellij-idea
超级小忍5 小时前
JVM 中的垃圾回收算法及垃圾回收器详解
java·jvm
weixin_446122465 小时前
JAVA内存区域划分
java·开发语言·redis
勤奋的小王同学~5 小时前
(javaEE初阶)计算机是如何组成的:CPU基本工作流程 CPU介绍 CPU执行指令的流程 寄存器 程序 进程 进程控制块 线程 线程的执行
java·java-ee
TT哇5 小时前
JavaEE==网站开发
java·redis·java-ee
2401_826097625 小时前
JavaEE-Linux环境部署
java·linux·java-ee
缘来是庄6 小时前
设计模式之访问者模式
java·设计模式·访问者模式
Bug退退退1236 小时前
RabbitMQ 高级特性之死信队列
java·分布式·spring·rabbitmq