分布式微服务--Nacos作为配置中心(一)

1.Nacos配置

远程配置中心注意总结:

     

  • 本地配置文件必须使用 bootstrap.ymlbootstrap.properties

    • 远程配置的加载优先于 application.yml,因此必须写在 bootstrap 配置文件中。

  • 本地配置文件中 file-extension 的取值仅支持两种:propertiesyml

    • 远程配置文件格式必须与此保持一致。(如果nacos客户端配置的是yaml那么使用yml)

    • spring:
      cloud:
      nacos:
      config:
      file-extension: yml       ✅ 支持
      file-extension: properties ✅ 支持
      file-extension: yaml      ❌ 不支持(会找不到配置)

  • 本地需要指定远程配置文件的名称,主要有两种方式:

    • 3.1 直接指定 name 明确指定配置中心中对应的配置文件名称。

    • 3.2 使用 prefix 通过本地项目名称作为前缀,要求本地项目名必须与远程配置中心的 dataId 保持一致。

  • 远程配置文件的命名规范

    • dataId 的名称和配置文件格式必须匹配,确保配置文件类型(如 .yaml.properties)与 file-extension 保持一致。

  • 本地指定远程配置文件名称时,应只写 dataId 中“点号(.)之前”的部分

    • 例如,远程配置文件名为 application-dev.yaml,则本地只写 application-dev

2.多环境下的Nacos配置

2.1Data Id(必须用-不能用_)

2.2.分组

2.3.Namespace

场景namespacedata-idspring.profiles.active
spring.profiles.active 区分环境通常用同一个 namespaceData ID 带环境后缀,如order-dev.ymldevprod 等环境名称,决定 Data ID
namespace 区分环境不同 namespace 分环境Data ID 可统一,如order-service.yml可不使用或和 namespace 配合使用

3.@RefreshScope如何实现的动态更新

4.spring.profiles.active

很多人在实际用 Nacos 时也遇到这个烦恼:

“每次想切换环境配置(如 dev、test、prod),都要改 profiles.active,重新启动才生效,是不是太麻烦?”


✅ 你说的现象的确是默认行为:

spring:profiles:active: dev
  • Spring Boot 会在启动时加载对应环境的配置,比如 nacos-config-demo-dev.yaml

  • 但这个是 启动参数级别的配置一旦启动就固定了不能动态变更

  • 所以每次你想换环境(比如 dev → prod),都得改文件 + 重启项目


🎯 那有没有办法 不用改文件、也不用重启就切换环境配置

✅ 有几种常用解决方案:


✅ 方式一:通过启动参数动态传入

不修改 application.yml,而是在启动命令中传递:

java -jar your-app.jar --spring.profiles.active=prod

或:

-Dspring.profiles.active=prod

这样可以做到一个 jar 运行多个环境避免写死在配置里


✅ 方式二:写多个 bootstrap 文件并按 profile 分隔

你可以使用多个 profile 文件,如:

  • bootstrap-dev.yml

  • bootstrap-test.yml

  • bootstrap-prod.yml

然后启动时仍通过命令行参数来激活:

--spring.profiles.active=dev

Spring Boot 会自动选择对应的 bootstrap-dev.yml 来加载。


✅ 方式三:把配置环境交给 Nacos,而不是用 spring.profiles.active

如果你不想再用 profiles.active 控制环境,可以改为使用不同命名空间或 group 来区分环境:

spring:application:name: order-servicecloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: ymlnamespace: dev-namespace-id

这样你只要切换 namespace,Nacos 就会拉取对应环境的配置,你可以在 Nacos 管理端切环境,不再靠启动参数


🧾 总结几种选择:

方法是否需要重启说明
修改 profiles.active✅ 需要重启原始方式
启动命令动态传参❌ 不需改配置文件推荐用于部署
多个 bootstrap-xxx.yml 文件✅ 可维护性强适合分环境构建
namespace 切换环境❌ 高级方式推荐在多环境集群中使用


✅ 推荐做法(实战中用得最多):

🚀 使用 namespace 切换环境 + 启动参数设置环境名,不再写死在配置文件里。

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

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

相关文章

Linux安装MySQL及链接第三方工具详细教程,带图带错误分析

本教程所有代码均为root用户权限下操作,如果不是root用户,在代码前加上(sudo )即可 一、安装MySQL服务 准备工作: 有时,系统无法解析 部分域名,导致无法获取镜像列表,从而无法安装…

WPS2024 软件下载及安装教程!

软件介绍 WPS Office是一套办公软件套装,包含WPS文字、WPS表格、WPS演示三大功能模块,可以满足常用文字处理、表格编辑和演示制作等多种办公需求,以其强大的功能和用户友好的界面赢得了众多用户的青睐。 软件:‌‌‌‌‌‌WPS Of…

ESD监控系统确保工厂生产设备的静电安全

随着电子工业的飞速发展,电子产品的精密程度不断提高,对生产环境的要求也日益严格。在许多电子制造工厂中,安装和维护有效的静电防护措施已成为保障生产安全和产品品质的关键。ESD监控系统作为静电管理的核心工具,为确保工厂设备和…

基于react的YAPI实战指南

基于react的YAPI 示例新增项目扩展遇到的问题&#xff0c;更改页面内容没有生效可能遇到的问题新增项目扩展 支持设置项目权限【公开】 <RadioGroup><Radio value"private" className"radio"><Icon type"lock" />私有<br …

docker镜像源配置教程,以及解决安装好docker配置镜像源后,出现报错。Job for docker.service failed

Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details.解决后效果&#xff1a;1、进入/etc/docker目录cd /etc/docker2、创建daemon.json文件并…

安卓264和265编码器回调编码数据写入文件的方法

一、写入文件 1、变量定义 private FileOutputStream m265FileOutputStream null; private File m265File null; private static final String HEVC_265_FILE_NAME "output.265"; // 或 .265 private static final String AVC_264_FILE_NAME "output.264&qu…

【基础完全搜索】USACO Bronze 2019 January - 猜动物Guess the Animal

题目描述 当奶牛贝茜和她的朋友艾尔西玩腻了常见的贝壳游戏后&#xff0c;她们喜欢玩另一个经典游戏"猜动物"。 游戏开始时&#xff0c;贝茜会在心中选定一种动物&#xff08;大多数时候她都会选奶牛&#xff0c;这让游戏变得相当无聊&#xff0c;不过偶尔贝茜也会…

Spring IoC容器与Bean管理

代码结构spring01/ ├── pom.xml ├── spring01.iml └── src/├── main/│ ├── java/│ │ └── com/│ │ └── demo/│ │ ├── bean/│ │ │ ├── Demo.java│ │ │ ├── Emp1.java│ │ …

【QT】概述

个人主页&#xff1a;Guiat 归属专栏&#xff1a;QT 文章目录1. Qt基础入门1.1 什么是Qt1.2 Qt的历史与发展1.3 Qt的核心特性2. Qt架构深度解析3. Qt开发环境搭建4. Qt应用开发实战4.1 项目结构4.2 设计用户界面4.3 实现功能逻辑4.4 数据持久化4.5 美化界面4.6 添加动画效果5. …

直播带货系统源码开发:山东布谷科技9年海内外电商直播研发技术深耕之路

在数字化浪潮的席卷下&#xff0c;电商行业历经多次变革&#xff0c;直播带货作为其中的新兴力量&#xff0c;已成为推动商品销售与品牌传播的关键引擎。山东布谷科技&#xff0c;凭借其在直播带货系统开发领域长达9年的深厚积淀&#xff0c;为电商直播带货系统源码定制开发提供…

20250731解决RK3588的AIOT参考设计刷机之后可以启动但是断电进MASKROM模式

20250731解决RK3588的AIOT参考设计刷机之后可以启动但是断电进MASKROM模式 2025/7/31 20:42缘起&#xff1a;编译RK3588原厂的Android14、buildroot(linux-6.1)的EVB7V11之后刷AIOT&#xff0c;可以启动。 但是通过命令关机之后&#xff1a;按POWER按键无法启动。 Android14 re…

永洪科技华西地区客户交流活动成功举办!以AI之力锚定增长确定性

在全球经济进入“慢周期”的背景下&#xff0c;企业对确定性增长工具的渴求达到前所未有的高度。近日&#xff0c;永洪科技在成都成功举办华西地区客户交流会&#xff0c;以“拥抱AI迈进数据智能时代”为主题&#xff0c;汇聚金融、制造、能源、消费品等领域的百余家头部企业代…

Electron 作品【AI聊天】桌面应用 —— 系列教程(含开源地址)

效果预览 开源地址 https://gitee.com/sunshine39/electron-vue3-AIchat 系列教程 Electron Forge【实战】桌面应用 —— AI聊天&#xff08;上&#xff09;Electron Forge【实战】桌面应用 —— AI聊天&#xff08;中&#xff09;Electron Forge【实战】桌面应用 —— AI聊天&…

JS--获取事件的子元素与父元素

原文网址&#xff1a;JS--获取事件的子元素与父元素-CSDN博客 简介 本文介绍JS如何获取事件的子元素与父元素。 情景描述 事件监听写在父元素上&#xff0c;我点击子元素时触发了事件&#xff0c;怎样通过事件获取子元素和这个父元素&#xff1f; 点击子元素时&#xff0c…

PPT自动化 python-pptx - 11 : 备注页 (Notes Slides)

在 PowerPoint 演示文稿的自动化处理中&#xff0c;备注页的操作常常被忽略&#xff0c;但实际上它在演讲者辅助、内容管理等场景中有着重要作用。本文将结合 python-pptx 库&#xff0c;详细讲解 PowerPoint 备注页的概念、与备注母版的关系&#xff0c;以及如何通过代码实现备…

【Python小工具】图片转PDF

文章目录0 前言1 主要功能的实现2 拖拽运行的实现3 检查细节【未成功实现】4 总结0 前言 不知道大家是否遇到过这种情况&#xff0c;提交材料时需要将多个图片材料整合到一个PDF中上传。这个时候我们需要找一个工具&#xff0c;其作用为接收我们给它的若干张图片&#xff0c;并…

零售消费行业研究系列报告

消费者洞察报告&#xff1a;即时零售美妆用户消费行为跃迁 食品饮料行业深度&#xff1a;新消费研究之三&#xff1a;即时零售应需而生&#xff0c;酒类品牌或迎新机遇 2025年上半年连锁零售门店发展蓝皮书 商贸零售行业新消费细分赛道投资机会梳理&#xff1a;新消费势能向…

Uniapp 验证 HTTPS 协议

Uniapp 中 验证 HTTPS协议的是示例代码<template><view class"content"><view style"margin-top: 20px;"><text>sslVerify : {{text}}</text></view><view><button click"testSslVerify">sslVe…

可视化图解算法57:字符串的排列

牛客网 面试笔试 TOP101 | LeetCode 3437. 全排列III 1. 题目 描述 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BA…

Go语言常量

目录 前言&#xff1a; 1、const声明常量 2、一次声明多个常量 前言&#xff1a; 这次来学习一下Go语言中的常量&#xff0c;在上一期中我学习了Go语言中的变量&#xff0c;如果有兴趣可以看看我往期的文章&#xff0c;或者点击Go语言声明变量。 相对于变量&#xff0c;常量的…