谷粒商城学习笔记-23-分布式组件-SpringCloud Alibaba-Nacos配置中心-简单示例

之前已经学习了使用Nacos作为注册中心,这一节学习Nacos另外一个核心功能:配置中心

一,Nacos配置中心简介

Nacos是一个易于使用的平台,用于动态服务发现和配置管理。作为配置中心,Nacos提供了以下核心功能和优势:

  1. 动态配置管理:Nacos允许用户在不重启服务的情况下动态地修改和推送配置信息,实现配置的实时更新。

  2. 配置集中存储:Nacos提供了一个中心化的配置存储,使得配置信息易于管理和维护,避免了配置分散在不同环境和系统中的问题。

  3. 配置版本控制:Nacos支持配置的版本控制,可以追踪配置的变更历史,方便进行回滚操作。

  4. 配置共享:Nacos允许跨服务共享配置,提高配置的复用性,减少冗余。

  5. 配置隔离:通过命名空间(Namespace)的概念,Nacos支持不同环境(如开发、测试、生产)的配置隔离,确保环境间的配置不会相互干扰。

  6. 配置监听和推送:Nacos提供了配置监听功能,当配置发生变化时,可以主动推送更新到客户端,实现配置的热更新。

  7. 安全性:Nacos支持配置的访问控制和权限管理,确保只有授权用户才能访问或修改配置。

  8. 多环境支持:Nacos支持多种部署环境,可以满足不同规模和需求的配置管理。

  9. 与Spring Cloud集成:Nacos与Spring Cloud紧密集成,提供了spring-cloud-starter-alibaba-nacos-config等组件,简化了在Spring Cloud应用中使用Nacos配置中心的过程。

  10. 易用性:Nacos提供了友好的用户界面,使得配置的查看、修改和管理变得直观简单。

Nacos作为配置中心,适用于微服务架构、云原生应用以及需要动态配置管理的分布式系统。通过集中管理配置,Nacos帮助企业提高了配置管理的效率和安全性,同时也简化了开发和运维的工作。

二,Nacos配置中心的使用说明

使用说明在官方文档上有详细记录,点击查看文档https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html。

1,声明对配置中心的Maven依赖

要使用配置中心首先要添加依赖。

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

在谷粒商城这个项目中,因为所有服务都要使用Nacos配置中心,所以在common模块添加这个依赖

2,在 bootstrap.properties 中配置 Nacos server 的地址和应用名

在工程或者模块的resource目录下,bootstrap.properties问中声明Nacos服务器的地址和服务名称。

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=gulimall-coupon

3,在Nacos配置列表界面创建配置文件

在这里插入图片描述

点击创建配置后,会有如下页面。

在这里插入图片描述

  • ① Data ID相当于文件名,要包含服务名,比如gulimall-coupon.properties
  • ② 配置文件类型,支持多种,对于微服务来讲,一般是yaml或者properties
  • ③ 黑色框内是要填充的配置信息

Nacos Spring Cloud 中,Data Id 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

三,测试

1,把配置信息放在工程里

我们先把信息放在工程的配置文件中,在coupon模块的配置文件application.properties中配置如下信息:

coupon.user.name=lcy
coupon.age=22

在这里插入图片描述

2,编写测试代码

在Controller中增加一个方法,使用配置文件中的配置信息。

	@Value("${coupon.user.name}")private String userName;@Value("${coupon.user.age}")private String userAge;@RequestMapping("test")public R test(){return R.ok().put("name", userName).put("age", userAge);}

注意上述代码,我们是通过注解@Value将配置文件中的配置注入到类变量中,然后在方法中引用。

3,测试

启动服务后,在浏览器中输入以下地址。

http://localhost:7000/coupon/coupon/test

输出如下,说明已经读取了配置文件中的信息。
在这里插入图片描述

4,把配置信息配置到配置中心

以优惠券服务为例进行配置。
在这里插入图片描述

点击配置文件列表右侧编辑按钮,进入编辑界面。

在这里插入图片描述

注意,为了弄清楚配置中心配置文件和本地配置文件的区别和联系,我们没有删除上一步本地的配置。

目前仅在配置中心配置了一项配置,这项配置在本地配置中也有,但值不一样,本地配置是coupon.user.name=lcy,配置中心是coupon.user.name=lcy2

重启服务后刷新浏览器,结果如下。

在这里插入图片描述
显然,name的值取自配置中心,而不是本地配置文件,说明配置中心的值会覆盖本地配置文件的值

错误记录

谷粒商城配置中心错误记录

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

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

相关文章

集成运算放大器的内部电路结构

原文出自微信公众号【小小的电子之路】 在集成电路问世之前&#xff0c;放大电路都是由晶体管、二极管、电阻、电容等分立元件组成&#xff0c;称为晶体管放大电路&#xff0c;但是复杂的计算限制了这类电路的推广。随着集成电路行业的发展&#xff0c;晶体管放大电路被制作在半…

Vue3 前置知识

1. Vue3 简介 2020年9月18日&#xff0c;Vue.js发布版3.8版本&#xff0c;代号&#xff1a;one Piece(海贼王)经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者官方发版地址&#xff1a;Release v3.0.0 One Piecevuejs/,core截止2023年10月&#xff0c;最新的公开版…

Python爬虫速成之路(3):下载图片

hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;绝命Coding-CSDN博客 &a…

开源AI生成连续一致性儿童故事书; GraphRAG结合本地版Ollama;AI辅助老年人用餐;开源无代码AI工作流VectorVein

✨ 1: SEED-Story SEED-Story 是一种能生成包含一致性图像的多模态长篇故事的机器学习模型&#xff0c;配套数据集已开放。 SEED-Story 是一种多模态长故事生成模型&#xff0c;具备生成包含丰富且连贯的叙事文本和一致性高的人物和风格图像的能力。此模型基于 SEED-X 构建。…

论文阅读【时空+大模型】ST-LLM(MDM2024)

论文阅读【时空大模型】ST-LLM&#xff08;MDM2024&#xff09; 论文链接&#xff1a;Spatial-Temporal Large Language Model for Traffic Prediction 代码仓库&#xff1a;https://github.com/ChenxiLiu-HNU/ST-LLM 发表于MDM2024&#xff08;Mobile Data Management&#xf…

PGCCC|【PostgreSQL】PCP认证考试大纲#postgresql 认证

PostgreSQL Certified Professional PCP&#xff08;中级&#xff09; PCP目前在市场上非常紧缺&#xff0c;除了具备夯实的理论基础以外&#xff0c;要有很强的动手能力&#xff0c;获得“PCP&#xff08;中心&#xff09;“的学员&#xff0c;将能够进入企业的生产系统进行运…

c#中的特性

在C#中&#xff0c;特性&#xff08;Attributes&#xff09;是一种向程序元素&#xff08;如类、方法、属性等&#xff09;添加元数据的方式。特性可以用来提供关于程序元素的附加信息&#xff0c;这些信息可以在编译时和运行时被访问。 特性主要有以下几个用途&#xff1a; 提…

《C专家编程》 C++

抽象 就是观察一群数据&#xff0c;忽略不重要的区别&#xff0c;只记录关注的事务特征的关键数据项。比如有一群学生&#xff0c;关键数据项就是学号&#xff0c;身份证号&#xff0c;姓名等。 class student {int stu_num;int id_num;char name[10]; } 访问控制 this关键字…

DDColor - 黑白老照片一键AI上色工具,找回“失色“的记忆,老照片一键“回春” 本地一键整合包下载

DDColor 是一个由阿里达摩院研究的基于深度学习技术的图像上色模型&#xff0c;主要用于黑白照片的修复和上色。它能够自动将黑白或灰度图像着色&#xff0c;使图像更加生动逼真。 该模型采用了先进的神经网络架构和训练技术&#xff0c;能够识别图像中的物体和场景&#xf…

[MySQL][表的约束][二][主键][自增长][唯一键][外键]详细讲解

目录 1.主键2.自增长1.是什么&#xff1f;2.索引 3.唯一键4.外键1.为什么&#xff1f;2.是什么&#xff1f;3.如何理解外键约束&#xff1f; 5.综合案例 -- 阅读 1.主键 主键&#xff1a;primary key用来唯一的约束该字段里面的数据&#xff0c;不能重复&#xff0c;不能为空&a…

vscode编译环境配置-golang

1. 支持跳转 如果单测函数上方不显示run test | debug test&#xff0c;需要安装Code Debugger&#xff08;因为以前的go Test Explorer不再被维护了&#xff09; 2. 单测 指定单个用例测试 go test -v run TestXXXdlv 调试 需要安装匹配的go版本和delve版本&#xff08;如…

AirSim环境配置

AirSim简介 AirSim 是一款基于游戏引擎的开源跨平台仿真器,它可以用于无人机、无人车等机器人的物理和视觉仿真。它同时支持基于 PX4 和 ArduPilot 等飞行控制器的软件在环仿真,目前还支持基于PX4的硬件在环仿真。AirSim 是作为虚幻游戏引擎的插件而存在的,适配基于虚幻引擎…

负载均衡-轮询-两种简易实现

1、描述 下游可用的服务器目前有5个&#xff08;node&#xff09;&#xff0c;设计一个方法&#xff0c;方法没有任何参数&#xff0c;采用轮询的方式返回其中一个node&#xff1b; 2、使用环形链表 每次取下一个node即可。注意&#xff1a;需要保证线程安全&#xff01; // …

子数组问题

目录 最大子数组和 环形子数组的最大和 乘积最大子数组 乘数为正数的最长子数组长度 等差数列划分 最长湍流子数组 单词拆分 环绕字符串中唯一的子字符串 声明&#xff1a;接下来主要使用动态规划来解决问题&#xff01;&#xff01;&#xff01; 最大子数组和 题目 …

C 语言指针进阶

1.0 指针的定义 指针是内存中一个最小单元的编号&#xff08;内存单元的编号称之为地址【地址就是指针指针就是地址】&#xff09;指针通常是用来存放内存地址的一个变量。本质上指针就是地址&#xff1a;口语上说的指针起始是指针变量&#xff0c;指针变量就是一个变量&#…

ROS2从入门到精通5-1:详解代价地图与costmap插件编写(以距离场ESDF为例)

目录 0 专栏介绍1 代价地图介绍1.1 基本概念1.2 代价定义 2 代价地图配置2.1 通用配置2.2 障碍层配置2.3 静态层配置2.4 膨胀层配置 3 代价地图插件案例3.1 构造地图插件类3.2 注册并导出插件3.3 编译与使用插件 0 专栏介绍 本专栏旨在通过对ROS2的系统学习&#xff0c;掌握RO…

GIT使用_提交IDEA代码到GIT分支上

以下是本人常用的GIT提交与上传代码&#xff0c;请选择适配自己的方式&#xff0c;仅供参考。 第一步&#xff0c;一般来说&#xff0c;我们从GIT上拉下来项目分支代码后&#xff0c;做些修改什么的&#xff0c;相关的代码都会变色。当然我们提交的部分就是我们修改的部分。有的…

算法思想总结:字符串

一、最长公共前缀 . - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;两两比较 时间复杂度mn 实现findcomon返回两两比较后的公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//两两比较 string retstrs[0];size…

Flutter实现局部刷新的几种方式

目录 前言 1.局部刷新的重要性 1.概念 2.重要性 2.局部刷新实现的几种方式 1.使用setState方法进行局部刷新 2.使用StatefulWidget和InheritedWidget局部刷新UI 3.ValueNotifier和ValueListenableBuilder 4.StreamBuilder 5.Provider 6.GetX 7.使用GlobalKey 前言 …

实战:功能强大齐全BBS论坛项目Echo简介

项目简介 Echo 是一套前后端不分离的开源社区系统&#xff0c;基于目前主流 Java Web 技术栈&#xff08;SpringBoot MyBatis MySQL Redis Kafka Elasticsearch Spring Security ...&#xff09;&#xff0c;并提供详细的开发文档和配套教程。包含帖子、评论、私信、系…