识别 Spring Cloud 配置文件的规则:Nacos, Bootstrap, Application

个人名片
在这里插入图片描述
🎓作者简介:java领域优质创作者
🌐个人主页:码农阿豪
📞工作室:新空间代码工作室(提供各种软件服务)
💌个人邮箱:[2435024119@qq.com]
📱个人微信:15279484656
🌐个人导航网站:www.forff.top
💡座右铭:总有人要赢。为什么不能是我呢?

  • 专栏导航:

码农阿豪系列专栏导航
面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️
Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻
Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡
全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀

目录

      • 识别 Spring Cloud 配置文件的规则:Nacos, Bootstrap, Application
        • 1. 配置文件简介
        • 2. 配置文件加载顺序
        • 3. 案例分析
          • 案例 1: 基础配置加载
          • 案例 2: Nacos 配置覆盖
          • 案例 3: 多环境配置
        • 4. 总结

识别 Spring Cloud 配置文件的规则:Nacos, Bootstrap, Application

Spring Cloud 项目中,配置文件管理是非常重要的一环。常见的配置文件包括 bootstrap.propertiesbootstrap.ymlapplication.propertiesapplication.yml,以及 Nacos 作为配置中心的远程配置。在实际项目中,这些配置文件的加载和优先级会直接影响到项目的运行。在本文中,我们将详细探讨这些配置文件的识别规则,并通过一些案例说明其特殊情况。

1. 配置文件简介
  • bootstrap.properties / bootstrap.yml:

    • 主要用于程序启动时初始化一些较早的配置,如配置中心地址、加密/解密信息等。
    • 加载时机较早,优先级高于 application 系列文件。
  • application.properties / application.yml:

    • 主要用于定义应用程序的配置,如数据源、日志配置等。
    • 加载时机稍晚于 bootstrap 文件。
  • Nacos 配置:

    • 作为配置中心,可以动态地管理和更新配置。
    • 配置可以覆盖 bootstrapapplication 系列文件的配置,具体取决于配置项的优先级和加载顺序。
2. 配置文件加载顺序

Spring Boot 和 Spring Cloud 项目中,配置文件的加载顺序大致如下:

  1. bootstrap.properties / bootstrap.yml
  2. application.properties / application.yml
  3. Nacos 配置
3. 案例分析
案例 1: 基础配置加载

假设我们有以下几个配置文件:

  • bootstrap.properties:

    spring.application.name=myApp
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    
  • application.properties:

    server.port=8080
    spring.datasource.url=jdbc:mysql://localhost:3306/db
    

在这种情况下,应用启动时首先加载 bootstrap.properties,然后加载 application.propertiesspring.application.namespring.cloud.nacos.config.server-addr 会首先被设置,之后 server.portspring.datasource.url 被加载。

案例 2: Nacos 配置覆盖

在上述基础上,我们在 Nacos 中添加配置:

  • Nacos 配置 (Data ID: myApp-dev.yml):
    server:port: 9090
    spring:datasource:url: jdbc:mysql://localhost:3306/remote_db
    

应用启动时的加载顺序如下:

  1. 加载 bootstrap.properties,设置应用名称和 Nacos 配置地址。
  2. 加载 application.properties,设置 server.port 为 8080,spring.datasource.urljdbc:mysql://localhost:3306/db
  3. 从 Nacos 加载配置,覆盖 server.port 为 9090,spring.datasource.urljdbc:mysql://localhost:3306/remote_db

最终,server.port 会是 9090,spring.datasource.url 会是 jdbc:mysql://localhost:3306/remote_db

案例 3: 多环境配置

为了支持不同环境的配置,我们可以在 Nacos 中创建不同环境的配置文件,例如 myApp-dev.ymlmyApp-prod.yml,并在 bootstrap.properties 中指定激活的配置文件:

  • bootstrap.properties:

    spring.application.name=myApp
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    spring.profiles.active=dev
    
  • Nacos 配置 (myApp-dev.yml):

    server:port: 9090
    spring:datasource:url: jdbc:mysql://localhost:3306/dev_db
    
  • Nacos 配置 (myApp-prod.yml):

    server:port: 8080
    spring:datasource:url: jdbc:mysql://localhost:3306/prod_db
    

dev 环境下,应用将加载 myApp-dev.yml,因此 server.port 会是 9090,spring.datasource.url 会是 jdbc:mysql://localhost:3306/dev_db。在 prod 环境下,应用将加载 myApp-prod.ymlserver.port 会是 8080,spring.datasource.url 会是 jdbc:mysql://localhost:3306/prod_db

4. 总结

Spring Cloud 中,配置文件的加载顺序和优先级至关重要。bootstrap.properties / bootstrap.yml 文件优先级最高,用于早期初始化配置。application.properties / application.yml 紧随其后,用于应用的常规配置。Nacos 配置中心的配置可以覆盖本地配置文件的值。

在实际项目中,合理使用这些配置文件和配置中心,可以提高配置管理的灵活性和可维护性,确保应用程序能够适应不同的运行环境和需求变化。

通过以上的案例分析,我们可以更清晰地理解 Spring Cloud 配置文件的识别规则和实际应用中的一些特殊情况。在实际开发中,建议根据具体项目需求,合理规划和组织配置文件,确保配置的合理性和有效性。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

redis哨兵系统框架部署

redsi主从配置 下面是基于redis主从的环境部署哨兵模式 1、在配置好redis主从后,添加哨兵模式需要在sentinel.conf文件添加一条命令(主从节点都需要添加) mymaster 是主节点的别名。192.168.25.129 是主节点的 IP。6379 是主节点的端口。2 是仲裁值,表…

遗漏知识点

什么是RAII? RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C语言的一种管理资源、避免泄漏的惯用法。利用的就是C构造的对象最终会被销毁的原则。RAII的做法是使用一个对象&am…

Day05-组织架构-角色管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.组织架构-编辑部门-弹出层获取数据2.组织架构-编辑部门-编辑表单校验3.组织架构-编辑部门-确认取消4.组织架构-删除部门5.角色管理-搭建页面结构6.角色管理-获取数…

网络数据传输中的封装与解封装详解

注:机翻,未校对。 The goal of networks is to transmit data from one host to another. 网络的目标是将数据从一个主机传输到另一个主机。 Encapsulation 封装 To achieve this goal, each layer adds its own header to the data. A header contain…

Vue2基础 14:自定义指令

自定义指令 1 函数式1.1 案例--v-text放大10倍 2 对象式2.1 案例--v-fbind默认获取焦点(函数式)2.2 案例--v-fbind默认获取焦点(对象式) 3 自定义指令容易犯的错4 全局指令写法(参考过滤器写法)&#xff1a…

跟《经济学人》学英文:2024年07月06日这期 Central banks are winning the battle against inflation

Central banks are winning the battle against inflation. But the war is just getting started Politics and protectionism will make life difficult 原文: The trajectory of inflation has not given central bankers much cause for celebration in rece…

android2024 gradle8 Processor和ksp两种编译时注解实现

android编译时注解,老生常谈,外面的例子都是bindView,脑壳看疼了,自己学习和编写下。 而且现在已经进化到kotlin2.0,google也逐渐放弃kapt,进入维护状态。所以要好好看看本贴。 参考我的工程: h…

gda动态调试-cnblog

忽的发现gda有动态调试功能 动态监听返回值 框柱指定方法,选择调试方法,gda会自动监听函数的返回值,例如 自定义frida脚本 gda会自动生成hook该函数的frida脚本

zigbee笔记:六、看门狗定时器(Watch Dog)

一、看门狗基础 1、看门狗功能: 由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误等,程序运行可能会陷入死循环。程序的正常运行被打断,由单片机控制的系统无法继…

kafka系列之消费后不提交offset情况的分析总结

概述 每当我们调用Kafka的poll()方法或者使用KafkaListener(其实底层也是poll()方法)时,它都会返回之前被写入Kafka的记录,即我们组中的消费者还没有读过的记录。 这意味着我们有一种方法可以跟踪该组消费者读取过的记录。 如前所述,Kafka的一…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十)-git(2)

下面是一些git的常用命令和基本操作,可以当做平常的笔记查询,用于学习!!! 文章目录 前言 一、git 二、git常用命令 总结 前言 下面是一些git的常用命令和基本操作,可以当做平常的笔记查询,用于…

解决前后端同一个端口跨域问题

前端起了一个代理 如果url是api开头的自动代理访问8080端口(解决前后端端口不一致要么是前端代理,要么是后端加过滤器) proxy:{/api:{target:http://localhost:8080,changeOrigin : true,// 替换去掉路径上的api// rewrite:(path)>path.r…

配置基于不同端口的虚拟主机

更改配置文件&#xff0c;添加三个不同端口的虚拟主机 <directory /www> allowoverride none require all granted </directory><virtualhost 192.168.209.136:80> documentroot /www servername 192.168.209.136 </virtualhost><virtualhost 192.…

【python基础】—如何理解安装程序时要配置Widows和DOS操作系统中的path环境变量?

文章目录 前言一、环境变量是什么&#xff1f;二、为什么需要设置环境变量&#xff1f;三、配置anaconda的环境变量 前言 在安装一些程序的时候&#xff0c; 我们总是需要将安装路径配置到正在使用电脑的环境变量里。为什么要进行这一步呢&#xff1f;本文主要解释Widows和DOS…

【后端面试题】【中间件】【NoSQL】MongoDB查询优化2(优化排序、mongos优化)

优化排序 在MongoDB里面&#xff0c;如果能够利用索引来排序的话&#xff0c;直接按照索引顺序加载数据就可以了。如果不能利用索引来排序的话&#xff0c;就必须在加载了数据之后&#xff0c;再次进行排序&#xff0c;也就是进行内存排序。 可想而知&#xff0c;如果内存排序…

可视化大屏的强势在于预警和感知的科学依据可靠性强

**可视化大屏的强势&#xff1a;预警与感知的科学依据可靠性探究** 数据可视化已成为信息传递的重要手段。其中&#xff0c;可视化大屏作为一种直观、高效的展示方式&#xff0c;广泛应用于各个领域&#xff0c;如智慧城市、智慧交通、智慧医疗等。可视化大屏的强势不仅体现在…

mysql 9 新特新

mysql9新特性 新特性Audit Log NotesC API NotesCharacter Set SupportCompilation NotesComponent NotesConfiguration NotesData Dictionary NotesData Type NotesDeprecation and Removal NotesEvent Scheduler NotesJavaScript ProgramsOptimizer NotesPerformance Schema …

单机多网卡互通——问题跟踪+工具分析

一、背景 想搭建soft ROCE(RXE)与实体ROCE设备互联的测试环境&#xff0c;为了节省机器以及使用方便&#xff0c;预想在配备ROCE卡的主机上&#xff0c;用另一个网卡绑定soft ROCE&#xff0c;然后互通。 [ETH1 ROCE] <--------------------> [ETH2 RXE] 二、问题跟…

实验三 图像增强—灰度变换

一、实验目的&#xff1a; 1、了解图像增强的目的及意义&#xff0c;加深对图像增强的感性认识&#xff0c;巩固所学理论知识。 2、学会对图像直方图的分析。 3、掌握直接灰度变换的图像增强方法。 二、实验原理及知识点 术语‘空间域’指的是图像平面本身&#xff0c;在空…

昇思25天学习打卡营第17天|ChatGLM-6B聊天demo

一、简介&#xff1a; 本次实验&#xff0c;基于MindNLP和ChatGLM6B模型搭建一个小的聊天应用&#xff0c;ChatGLM6B 是基于 GLM-4 模型开发的开源对话机器人&#xff0c;拥有 62 亿个参数&#xff0c;能够进行自然流畅的语言交流。在对话中&#xff0c;ChatGLM6B 可以胜任文案…