SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别

 1. 加载时机

- bootstrap.yml
  - 在Spring应用程序启动的早期阶段加载,早于application.yml。
  - 它主要用于加载应用程序的上下文或环境设置,例如配置中心的地址、加密解密信息等。
  - 通常在ApplicationContext初始化之前加载,因此适用于早期的配置设置。

- application.yml
  - 在ApplicationContext初始化时加载。
  - 用于定义应用程序的配置参数,例如数据库连接、端口、日志级别等。
  - application.yml 可以覆盖 bootstrap.yml 中的配置,但它本身是加载较晚的。

 2. 用途

- bootstrap.yml
  - 主要用于Spring Cloud的特定场景,如:
    - 配置中心(如Spring Cloud Config)的位置和凭据。
    - 应用程序名称(spring.application.name)。
    - 加密/解密的密钥配置。
    - 与环境相关的属性,如配置文件激活和环境变量等。
  - 常用于服务发现、配置管理等需要在应用程序上下文初始化之前生效的配置。

- application.yml
  - 用于定义应用程序运行时的配置,这些配置通常是业务相关的,如:
    - 数据源配置。
    - 消息队列配置。
    - 日志级别和格式。
    - 其他应用程序特定的设置。
  - 大多数情况下,应用程序的主要配置都放在 application.yml 中。

 3. 覆盖优先级

- bootstrap.yml
  - 它的配置具有较高的优先级,尤其是涉及到早期初始化的属性。
  - 由于它在 application.yml 之前加载,因此可以用于设置在应用程序启动时就必须确定的属性。

- application.yml
  - 它的配置优先级稍低于 bootstrap.yml。
  - application.yml 中的配置可以覆盖 bootstrap.yml 的配置,但仅限于在上下文初始化后加载的配置。

 示例场景

- bootstrap.yml 示例:
  yaml
  spring:
    application:
      name: my-service
    cloud:
      config:
        uri: http://config-server:8888
        fail-fast: true
    profiles:
      active: dev
  
  - 在这个示例中,bootstrap.yml 配置了应用程序的名称和配置中心的地址。这些信息需要在应用启动之前就加载,以便从配置中心获取其他配置信息。

- application.yml 示例:
  yaml
  server:
    port: 8080
  logging:
    level:
      root: INFO
  spring:
    datasource:
      url: jdbc:mysql://localhost:3306/mydb
      username: user
      password: password
  
  - 在这个示例中,application.yml 配置了服务器端口、日志级别和数据源信息。这些配置与应用的运行环境紧密相关。

 适用场景

- bootstrap.yml
  - 当需要在应用启动前进行配置加载时,如从远程配置中心获取配置信息或设置一些关键的启动参数。
  - 在Spring Cloud Config中使用时尤为常见。

- application.yml
  - 用于定义应用的常规配置,包括运行时所需的各种设置和参数。
  - 适用于大多数Spring Boot应用的配置需求。

 结合使用

在实际项目中,bootstrap.yml 和 application.yml 可以结合使用。常见的模式是:
- 在 bootstrap.yml 中配置需要早期加载的参数,如应用名称、配置中心地址等。
- 在 application.yml 中配置应用程序的业务逻辑相关参数,如数据库连接、缓存设置等。

这样可以充分利用两者的优势,确保应用程序在启动过程中能够顺利加载所有必要的配置。

总结起来,bootstrap.yml 和 application.yml 各有其特定的用途和加载时机,正确理解和使用它们能够帮助开发者更好地管理Spring Cloud应用的配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

环形链表2证明

解法 快慢指针相遇后,其中一个指回头部,然后同步前进 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNod…

【gitcode】idea 在本地拉取和push本地代码到gitcode仓库

【首次使用】 1、idea 拉取代码,很容易这里就不记录了。 2、push代码时,总是弹窗登录输入在gitcode.com登录能成功。但是在idea 怎么都不成功。控制台提示 remote: HTTP Basic: Access denied fatal: Authentication failed for ******* 认证失败 3…

3D ToF赋能小米CyberDog 2提升视觉灵敏度

随着科技的进步,智能机器人越来越多地融入我们的日常生活。其中,CyberDog 2作为一款前沿的四足机器人,凭借其出色的视觉灵敏度和多功能技术配备,受到了广泛的关注。本文将重点探讨CyberDog 2的视觉系统,尤其是其四种不同类型的摄像头如何共同提升其视觉灵敏度,以及激光传…

uniapp实现路由拦截——遇到问题(三)

uniapp路由拦截开发过程中遇到问题 文章目录 uniapp路由拦截开发过程中遇到问题App 无法退出应用监听返回数据结构解决方式模拟原生物理返回键提示不提示,直接退出应用 微信小程序 登录成功返回页面报错效果图不同平台来源页面数据结构解决方式 App 无法退出应用 安…

HP惠普暗影精灵10 OMEN Gaming Laptop 16-wf1xxx原厂Win11系统镜像下载

惠普hp暗影精灵10笔记本电脑16-wf1000TX原装出厂Windows11,恢复开箱状态oem预装系统安装包,带恢复重置还原 适用型号:16-wf1xxx 16-wf1000TX,16-wf1023TX,16-wf1024TX,16-wf1025TX, 16-wf1026TX,16-wf1027TX,16-wf1028TX,16-wf1029TX, 16-wf1030TX,16-…

Python写UI自动化--playwright的运行模式

Playwright支持两种运行模式:有头模式(Headful) 和 无头模式(Headless)。这两种模式的主要区别在于是否显示浏览器的图形用户界面(GUI)。 目录 有头模式(Headful) 无头模式(Headless) 具体实现步骤 启用无头模式 有头模式(默认设置) 总…

Autosar诊断-FIM模块功能介绍

文章目录 前言一、FIM模块概述二、FID概念介绍Event ID和DTC之间的关系Event ID与FID之间的关系FIM数据结构三、FiM模块与SW-C模块交互关系四、FIM模块函数调用关系FiM功能模块作用过程前言 Autosar诊断的主体为UDS(Unified Diagnostic Services)协议,即统一的诊断服务,是…

python实战根据excel的文件名称这一列的内容,找到电脑D盘的下所对应的文件位置,要求用程序实现

今天客户需要 根据excel的文件名称这一列的内容,找到电脑D盘的下所对应的文件位置,要求用程序实现 数据样例:记录.xlsx 解决代码: 1、安装必要的库: pip install pandas openpyxl2、编写Python脚本: im…

Modbus为何要转成ProfiNET

Modbus与ProfiNET代表了工业通讯不同阶段的发展,各自具有优缺点。Modbus简单易用,适合小型系统;ProfiNET高效稳定,适用于大型复杂网络。转换Modbus为ProfiNET可提高系统性能和扩展性。实际场景下,升级生产线控制器为Pr…

watch详解

Vue.js中的watch选项允许你监听Vue实例的数据变化,并在数据变化时执行自定义的逻辑。watch的使用场景非常广泛,它可以用来处理诸如数据的验证、异步操作、路由跳转、动画等各种需求。在本文中,我将详细介绍watch的用途以及如何在实际项目中应…

分享一个 .NET Core 使用选项方式读取配置内容的详细例子

前言 在 .NET Core 中,可以使用选项模式(Options Pattern)来读取和管理应用程序的配置内容。 选项模式通过创建一个 POCO(Plain Old CLR Object)来表示配置选项,并将其注册到依赖注入容器中,方…

弗洛伊德算法——C语言

弗洛伊德算法,是一种用于解决所有顶点对之间最短路径问题的经典算法,该算法通过动态规划的方法计算出从每个顶点到其他所有顶点的最短路径。 弗洛伊德算法的基本思想是逐步考虑每一个顶点作为中间点,更新所有顶点对之间的最短路径。它通过以…

js 前端 Function.prototype.call.call(0[‘toString‘], *, 16)

这个函数将 数组转任意进制 Function.prototype.call.call(0[toString], *, 16)

Oracle--存储结构

总览 一、逻辑存储结构 二、物理存储结构 1.数据文件 2.控制文件 3.日志文件 4.服务器参数文件 5.密码文件 总览 一、逻辑存储结构 数据块是Oracle逻辑存储结构中的最小的逻辑单位,一个数据库块对应一个或者多个物理块,大小由参数DB_BLOCK_SIZE决…

Java语法和基本结构介绍

Java语法和基本结构是Java编程的基础,它决定了Java代码的书写方式和程序的结构。以下是Java语法和基本结构的一些关键点: 1.标识符和关键字:Java中的标识符是用来标识变量、函数、类或其他用户自定义元素的名称。关键字是预留的标识符&#x…

大模型日报2024-06-16

大模型日报 2024-06-16 大模型资讯 大模型产品 MARS5 TTS:开源高拟真语音合成 摘要: MARS5 TTS是一款开源语音合成模型,能以2-3秒音频为参考,在140多种语言中复制高难度场景,如体育解说、电影和动漫等。 AI工具首发平台&#xff1…

Android之实现两段颜色样式不同的文字拼接进行富文本方式的显示

一、使用SpannableString进行拼接 1、显示例子 前面文字显示红色&#xff0c;后面显示白色&#xff0c;显示在一个TextView中&#xff0c;可以自动换行 发送人姓名: 发送信息内容2、TextView <TextViewandroid:id"id/tv_msg"android:layout_width"wrap_c…

02:浮点型数据类型存储空间大小

OpenJudge - 02:浮点型数据类型存储空间大小 描述 分别定义float&#xff0c;double类型的变量各一个&#xff0c;并依次输出它们的存储空间大小&#xff08;单位&#xff1a;字节&#xff09;。 输入 无。 输出 一行&#xff0c;两个整数&#xff0c;分别是两个变量的存储空间…

[C++ STL] vector 详解

标题&#xff1a;[C STL] vector 详解 水墨不写bug 目录 一、背景 二、vector简介 三、vector的接口介绍 &#xff08;1&#xff09;默认成员函数接口 i&#xff0c;构造函数&#xff08;constructor&#xff09; ii&#xff0c;析构函数&#xff08;destructor&#xff0…

Verilog综合出来的图

Verilog写代码时需要清楚自己综合出来的是组合逻辑、锁存器还是寄存器。 甚至&#xff0c;有时写的代码有误&#xff0c;vivado不能识别出来&#xff0c;这时打开综合后的schematic简单查看一下是否综合出想要的结果。 比如&#xff1a;误将一个always模块重复一遍&#xff0c;…