当前位置: 首页 > article >正文

application.yml 和 bootstrap.yml

在 Spring Boot 中,application.ymlbootstrap.yml 都是用来配置应用程序的属性文件,通常用于环境配置、服务配置等。但是,它们有一些不同的用途和加载顺序。以下是它们之间的主要区别:

1. application.yml

  • 主要作用:这是 Spring Boot 应用程序中最常见的配置文件。它用于配置应用程序的各种属性,如数据库连接、端口号、日志配置、定时任务等。
  • 加载顺序application.yml 在 Spring Boot 应用启动时加载,是默认的配置文件。
  • 用途:一般用于与应用程序本身相关的配置,例如:
    • 端口配置
    • 数据库配置
    • 日志级别
    • 自定义的应用参数

2. bootstrap.yml

  • 主要作用bootstrap.yml 是用于初始化 Spring Cloud 配置的文件,通常与 Spring Cloud 配置中心(如 Spring Cloud Config)一起使用。它的作用是用来在应用启动时早期加载配置,尤其是外部配置源(例如配置中心、Consul、Zookeeper 等)。
  • 加载顺序bootstrap.yml 会在 application.yml 之前加载。Spring Boot 会首先加载 bootstrap.yml,然后加载 application.yml。因此,bootstrap.yml 中的配置优先级较高。
  • 用途:主要用于与应用初始化阶段相关的配置,常用于:
    • 配置 Spring Cloud 配置中心
    • 配置外部服务(如 Consul、Zookeeper 等)
    • 设置 Spring Cloud 的相关配置

3. 加载顺序和优先级

  • 加载顺序:Spring Boot 应用程序会先加载 bootstrap.yml,然后加载 application.yml
  • 优先级:如果在两个文件中都定义了相同的属性,bootstrap.yml 中的配置会覆盖 application.yml 中的配置。

4. 常见的使用场景

  • application.yml

    • 用于单纯的 Spring Boot 项目,或者不涉及 Spring Cloud 的项目。
    • 配置 Spring Boot 内部的各种属性,例如数据库连接、服务端口、日志设置等。
  • bootstrap.yml

    • 主要用于 Spring Cloud 应用,尤其是涉及到外部配置源(如 Spring Cloud Config)的项目。
    • 在 Spring Cloud 中,bootstrap.yml 用来配置配置服务器的地址和其他初始化配置。

示例:

application.yml 示例(用于普通的 Spring Boot 配置):
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
bootstrap.yml 示例(用于 Spring Cloud 配置):
spring:
  application:
    name: my-spring-cloud-app

  cloud:
    config:
      uri: http://localhost:8888  # 配置中心的地址

application.yml 配置了应用的端口和数据库连接,bootstrap.yml 配置了 Spring Cloud Config 的服务器地址。

5. 总结

  • application.yml:适用于大多数普通的 Spring Boot 应用,包含应用的业务逻辑配置。
  • bootstrap.yml:用于 Spring Cloud 环境,专门处理配置中心的初始化和外部配置源的加载,且会在 application.yml 之前加载。

如果你在使用 Spring Cloud 的项目,通常需要同时使用这两个文件;而在没有使用 Spring Cloud 的普通 Spring Boot 项目中,application.yml 就足够了。


http://www.kler.cn/a/428358.html

相关文章:

  • vue3组件传值具体使用
  • 消息队列篇--原理篇--Pulsar(Namespace,BookKeeper,类似Kafka甚至更好的消息队列)
  • python 找出合并并排序两个有序列表后的第n个最小元素
  • 2024年度总结
  • OpenEuler学习笔记(九):安装 OpenEuler后配置和优化
  • CANoe Trace窗口
  • 坚果投影仪J10如何用苹果Siri开关机并和米家联动
  • 一、Origin绘制柱状图
  • 23种设计模式之解释器模式
  • 【PlantUML系列】状态图(六)
  • 2-2-18-14 QNX系统架构之 TCP/IP 网络
  • 保护数字资产:iOS 加固在当前安全环境中的重要性
  • ChatGPT Pro是什么
  • 【机器人】系统辨识之激励轨迹设计(傅里叶级数)
  • 原生微信小程序使用原子化tailwindcss
  • 阿里云负载均衡SLB实践
  • 在 Ubuntu 18.04 上使用 Snort 的完整攻略
  • LVGL9 开关控件 (lv_switch) 使用指南
  • java+ssm+mysql水产品商城
  • 重读《人月神话》(17)-没有银弹-软件工程中的根本和次要问题
  • C/C++ 堆和优先队列
  • 深度剖析 K 近邻算法:分类、回归实战及优劣势分析
  • 电脑启动过程
  • okHttp的tcp连接池的复用
  • 记录一次使用git无权限的问题排查
  • 【MIT-OS6.S081作业1.4】Lab1-utilities find