SpringCloud + Nacos配置文件加载顺序和优先级详解

news2024/11/26 22:29:39

文章目录

    • 一、加载顺序与优先级
      • 1. 示例配置
      • 2. 配置文件分类
      • 3. 加载顺序
      • 4. 优先级
    • 二、本地配置优先的设置
    • 结论

在微服务架构中,合理地管理和理解配置文件的加载顺序与优先级对于确保应用的稳定性和灵活性至关重要。特别是在使用 Spring Cloud Alibaba Nacos 作为配置中心的场景下,这一点显得尤为重要。本文将基于一个具体的 bootstrap.yml 配置示例,深入探讨这些概念,并介绍如何通过 Nacos 配置实现本地配置的优先级设置。

一、加载顺序与优先级

1. 示例配置

首先,我们看一下示例的 bootstrap.yml 配置:

spring:
  application:
    name: content-api
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev
        group: xuecheng-plus-project
      config:
        namespace: dev
        group: xuecheng-plus-project
        file-extension: yaml
        refresh-enabled: true
        extension-configs:
          - data-id: content-service-${spring.profiles.active}.yaml
            group: xuecheng-plus-project
            refresh: true
        shared-configs:
          - data-id: swagger-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
          - data-id: logging-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
  profiles:
    active: dev

2. 配置文件分类

Spring Cloud Alibaba Nacos 环境中,我们主要遇到以下类型的配置文件:

  1. 本地配置文件

    • bootstrap.yml / bootstrap.yaml
    • application.yml / application.yaml
  2. Nacos 配置中心的配置文件

    • 共享配置文件 (shared-configs)
    • 扩展配置文件 (extension-configs)
    • 项目应用名配置文件 (${spring.application.name}.yaml / .properties)

3. 加载顺序

  1. bootstrap.yml / bootstrap.yaml:首先加载,用于配置应用的启动环境。
  2. Nacos 配置中心的配置文件
    • 先加载 共享配置文件 (shared-configs)
    • 然后是 扩展配置文件 (extension-configs)
    • 最后是 项目应用名配置文件 (${spring.application.name}.yaml / .properties)
  3. application.yml / application.yaml:在 Nacos 配置加载之后。

4. 优先级

  1. 项目应用名配置文件:具有最高优先级。
  2. 扩展配置文件:次之,覆盖共享配置。
  3. 共享配置文件:优先级低于扩展配置。
  4. 本地 application.yml / application.yaml:优先级低于所有从 Nacos 加载的配置。
  5. 本地 bootstrap.yml / bootstrap.yaml:优先级最低。

二、本地配置优先的设置

Nacos 中,可以通过特定的配置来设置本地配置优先。这可以在 bootstrap.ymlapplication.yml 文件中设置:

spring:
  cloud:
    config:
      override-none: true

override-none 设置为 true 时,本地配置文件 (application.yml / application.yaml) 将具有最高的优先级,即使这些配置在 Nacos 中也有定义。这种设置适用于需要在不同环境中覆盖远程配置中心配置的场景。

结论

了解和正确应用 Spring Cloud Alibaba Nacos 中配置文件的加载顺序和优先级,对于确保微服务的正确运行至关重要。此外,通过配置 override-nonetrue,可以灵活地实现本地配置优先的需求,进一步增强了配置管理的灵活性。这些特性使得 Spring Cloud Alibaba Nacos 成为管理微服务配置的强大工具。
在这里插入图片描述

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

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

相关文章

数组与字符串深度巩固

经过再三思考觉得今天就写一篇关于数组与字符串相关的文章吧!其中字符串主要通过练习来巩固知识亦或是获得新知识。好接下来将进行我们的学习时刻了。 首先我们来思考一个问题,你真的了解数组的数组名吗?数组名真的就单单一个名字而已吗&…

nodejs+vue+mysql校园失物招领网站38tp1

本高校失物招领平台是为了提高用户查阅信息的效率和管理人员管理信息的工作效率,可以快速存储大量数据,还有信息检索功能,这大大的满足了用户和管理员这两者的需求。操作简单易懂,合理分析各个模块的功能,尽可能优化界…

【unity小技巧】unity3d创建和实现破碎打破物品,万物可破碎

文章目录 破碎插件可破碎的物品代码控制加入破坏力完结 破碎插件 关于物品破碎,其实之前已经分享过一个免费插件,如果没有碎片化的模型,可以选择使用这个插件: OpenFracture插件实现unity3d物体破裂和切割 可破碎的物品 代码控制…

zsh: command not found: mysql (mac通过安装MySQL后终端cmd找不到mysql命令)

考虑是mysql环境变量没有配置的问题 1.查找mysql安装路径 ps -ef|grep mysql 2.先启动上安装的mysql 3. 查看 .bash_profile 文件 ls -al 查看是否有(.bash_profile)文件 如果没有就输入以下命令创建一个,再查看 touch .bash_profile 4.打开 .bash_profile 文件 …

Spring的事件监听机制

这里写自定义目录标题 1. 概述(重点)2. ApplicationEventMulticaster2.1 SimpleApplicationEventMulticaster2.2 AbstractApplicationEventMulticaster 3. ApplicationListener3.1 注册监听器3.2 自定义 4. SpringApplicationRunListeners 1. 概述&#…

气膜厂家产品种类繁多,哪种适合您?

气膜是一种以薄膜为材料、通过气体充气而形成的充气结构。由于其轻便、灵活、耐用等优点,在各个领域都有广泛应用。气膜厂家生产的产品种类繁多,下面将介绍几种常见的气膜产品,并分析哪种适合您。 气膜建筑是气膜厂家的特色产品之一。气膜建…

探析零知识证明高能发展路径:走向更安全、私密且可扩展的 Web3 新时代

原文:https://www.coinbase.com/blog/understanding-the-zero-knowledge-landscape 作者:Jonathan King|Coinbase Ventures 编译:TinTinLand 本文核心观点 2023 年,零知识技术吸引了逾 4 亿美元的投资,主…

凝聚共识开新篇:产业“围炉谈”共促5G-A加速

由北京通信学会主办的“新阶段、新体验、新价值”产业围炉谈活动在北京时间1月25日已成功举办。 来自社会各界的专家代表齐聚一堂,围炉畅谈5G-A产业发展,共同呼吁5G-A产业加速,擘画数字发展新画卷。 承前启后,5G-A开启5G新阶段 …

MySQL索引的原理和SQL优化策略

1. 索引 在InnoDB存储引擎中,索引分为聚簇索引和辅助索引两种类型。 聚簇索引是指基于表的主键构建的索引,它决定了表中数据的物理存储顺序。也就是说,聚簇索引中的键值按照主键的顺序来排序,并且每个叶子节点存储的是整个表行的…

VBA技术资料MF113:将文件夹图像添加到PowerPoint

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

小程序跳转:云开发之h5跳小程序

背景: 抖音通过链接跳转微信小程序。考虑使用h5页面中转实现,下面是实现步骤。 官方的文档上面写的还是比较详细的,可以仔细阅读,按照步骤去操作。 实践总结: 测试必须使用真机测试,模拟器之类的全部不…

Spring实现事务(一)

Spring事务 .什么是事务事务的操作Spring中事务的实现准备工作创建表创建项目,引入Spring Web, Mybatis, mysql等依赖配置文件实体类 编程式事务(手动写代码操作事务)声明式事务(利用注解自动开启和提交事务) . 什么是事务 事务是⼀组操作的集合, 是⼀个不可分割的操作 在我们…

P9809 [SHOI2006] 作业 Homework 浅显易懂讲解这道题为什么根号分治

题目: 我们有一堆数,找出模Y的最小值。 思路: 我们初步思考,会发现每个Y是一段,比如 1~Y , Y~2Y , 2Y~3Y ... 每个区间都可能有最小的答案。 这里对Y可以使用根号分治,因为: 当Y足够大时&a…

MySQL原理(一)架构组成之物理文件组成

目录 一、日志文件 1、错误日志 Error Log 1.1、作用: 1.2、开启关闭: 1.3、使用 2、二进制日志 Binary Log & Binary Log Index 2.1、作用: 2.2、开启关闭: 2.3、Binlog还有一些附加选项参数 (1&#x…

8.4 Springboot整合Redis 之RedisTemplate方式

文章目录 前言一、Maven依赖二、配置文件application.properties2.1 连接池核心配置说明三、RedisTemplate配置类四、RedisTemplate工具类五、测试前言 上文我们讲解了官方推荐的Jedis方式,本文讲解Springboot通过Spring Data Redis 集成 Redis,主要使用RedisTemplate方式,…

LeetCode 使循环数组所有元素相等的最少秒数

地址:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 难度:中等 题目描述:给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒,你可以对数组执行以下操作: 对于范围在 [0, n - 1] 内的每…

Java 类的加载流程

一、类的加载 指的是将类的.class 文件中的二进制 数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创 建一个 java.lang.Class 对象,用来封装类在方法区内的数据结构。 类从被加载到虚拟机内存中开始,到卸载出内…

Android super.img解包和打包指南(含工具下载lpunpack、lpmake、lpdump)

本文所有命令均需要在linux 上执行 一、解包 1、将Android sparse image格式的super.img转成二进制文件 $ sudo apt install android-sdk-libsparse-utils $ simg2img super.img super.img.bin 2、下载工具lpunpack 和lpmake、lpdump 以及其依赖库 下载地址:https://downl…

进程控制(二)进程等待

文章目录 进程等待什么是进程等待???为什么要进行进程等待??? 进程等待的方法wait函数waitpid函数 进程等待 什么是进程等待??? 进程等待是通过wait/waitpid的方式&…

异或运算实现加密解密

异或运算符^,相同为0,不同为1(同0非1) 由异或运算法则可知:a ^ a 0,a ^ 0 a 如果c a ^ b,那么a b ^ c,即a ^ b ^ b a,^ 的逆运算仍然是 ^ 利用异或运算的性质&am…