Spring Cloud学习笔记(Nacos):配置中心基础和代码样例

news2024/12/25 12:53:53

这是本人学习的总结,主要学习资料如下
- 马士兵教育

  • 1、Overview
  • 2、样例
    • 2.1、Dependency
    • 2.2、配置文件的定位
    • 2.3、bootstrap.yml
    • 2.4、配置中心新增配置
    • 2.5、验证

1、Overview

配置中心用于管理配置项和配置文件,比如平时写的application.yml就是配置文件。

我们可以把配置文件存在配置中心中,然后动态获取配置文件。更方便的是,我们可以动态修改配置文件,在不重启系统的情况下更新配置。


2、样例

我会建立一个Spring项目,将其注册到Nacos中,然后从Nacos动态获取配置。

2.1、Dependency

首先是作为一个普通的Client需要注册到Nacos中,另外想要从Nacos中获取配置则需要加上spring-cloud-starter-alibaba-nacos-config这个依赖。

<dependencies>
   <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

2.2、配置文件的定位

配置中心有多个配置文件,我们需要一些主键来定位确定我们的项目使用哪个配置文件。

配置文件的主键由namespacegroupspring.profiles.activespring.application.namespring.cloud.nacos.config.file-extension组成,其中spring.profiles.activespring.application.namespring.cloud.nacos.config.file-extension这三个组成一个叫dataId的东西。

  • namespace和注册中心的意义相同。它通常代表着一个环境,所有的东西都要装进一个namespace里面。默认使用叫public的命名空间,可以用spring.cloud.nacos.config.namespace指定。
  • group也是和注册中心的意义相同,它通常代表一个业务,比如order-group。默认是DEFAULT_GROUP,可以用spring.cloud.nacos.config.group指定,要注意的是指定的是命名空间的id而不是name。
  • spring.profiles.activespring.application.name,Spring项目的配置。
  • spring.cloud.nacos.config.file-extension,表示配置文件的后缀名。
  • dataId,由spring.profiles.activespring.application.namespring.cloud.nacos.config.file-extension三者组成,需要在配置中心填写。组成规则是${spring.application.name}-${spring.profiles.active}.${file-extension}。比如说applicationNamenacos-config-clientprofiledevfile-extensionyaml,那么dataId就是nacos-config-client-dev.yaml

2.3、bootstrap.yml

我们需要配置关于配置中心的内容,比如配置中心的地址,配置中心的配置文件的后缀名等等。

所以关于配置中心的配置需要在项目启动前加载。而bootstrap.ymlapplication.ylm之前加载,所以关于配置中心的配置我们都会选择放在bootstrap.yml中。

前面的配置是项目作为Nacos的Client需要配置的。只有在spring.cloud.nacos.config才是关于配置中心的。该例子中设置了配置中心的地址是localhost:8848,拉取后缀名是yaml的文件。

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        # group: DEFAULT_GROUP 默认值,不写默认是DEFAULT_GROUP

这里或许会有些奇怪,配置中心那么多配置文件,不需要指定配置文件名可以获取到我们想要的那个文件吗?这里是涉及到dataId的命名规则,在后续会讲到。


application.yml的内容比较简单,只是设置了当前的profile

spring:
  profiles:
    active: dev

2.4、配置中心新增配置

点击Nacos管理页面右上角的加号就可以新增配置。
在这里插入图片描述
配置时有两个值必填,一个是dataId,另一个是group。这两个值相当于是该配置文件的主键。

dataId,它的值必须遵循一定的规则。

dataId必须是这样的格式${spring.application.name}-${spring.profiles.active}.${file-extension}

在这里例子当中,spring.application.name=nacos-config-clientspringprofiles.active=devfile-extension=yaml

所以dataId必须是nacos-config-client-dev.yaml。只有这样Nacos才知道当前新增的配置文件是属于哪个Client的。

我们新增一个配置config.info=hello。具体截图如下,必须注意,每个冒号后面都要接一个空格。

在这里插入图片描述


group的默认值是DEFAULT_GROUP,我们在bootstrap.yml中不明确写spring.cloud.nacos.config.group的值的话,那Spring项目默认是拉取group=DEFAULT_GROUP的配置文件


2.5、验证

用下面的代码验证系统是否读取到了配置中心的配置。

注意@RefreshScope这个注解,这个注解能让我们一直获取到最新的配置,并且不用重启项目。

@RestController
@RefreshScope
public class ConfigController {
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
}

获取config.info成功。

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

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

相关文章

【MySQL】聊聊脏页flush的原理和控制策略

flush的时机 当更新一条SQL的时候&#xff0c;其实是先写undo日志&#xff0c;然后更新数据&#xff0c;二阶段写入redo 和 bin log。对于更新数据&#xff0c;其实是只修改了changer buffer中的数据&#xff0c;比如将name qxlxi, 但是磁盘数据页没有和内存页数据保持一致。…

删除指定目录

题目描述 我们定义一种目录结构字符串(类似Windows的 tree /f 的输出内容),用它来表达目录树的结构,如图所示: 目录结构字符串的输入仅含数字、字母和|-,其中:|- 表示子目录的层次符号;字母或数字组成目录名(字母大小写敏感)。 某一子目录挂接在其前面、最近的上一层…

【Linux系统编程】进程概念、进程排队、进程标识符、进程状态

目录 什么是进程&#xff1f; 浅谈进程排队 简述进程属性 进程属性之进程标识符 进程操作之进程创建 初识fork fork返回值 原理角度理解fork fork的应用 进程属性之进程状态 再谈进程排队 进程状态 运行状态 阻塞状态 挂起状态 Linux下的进程状态 “R”(运行状…

【Go专家编程——内存管理——垃圾回收】

垃圾回收 所谓的垃圾就上不在需要的内存块&#xff0c;垃圾如果不清理&#xff0c;这些内存块就没有办法再次被分配使用。在不支持垃圾回收的编程语言中&#xff0c;这些垃圾内存就上泄露的内存。 1. 垃圾回收算法 常见的垃圾回收算法有3种 引用计数&#xff1a;对每个对象…

SpringCloud的Config配置中心,为什么要分Server服务端和Client客户端?

SpringCloud的Config配置中心&#xff0c;为什么要分Server服务端和Client客户端&#xff1f; 在SpringCloud的Config配置中心中分了Server服务端和Client客户端&#xff0c;为什么需要这样分呢&#xff1f;它的思想是所有微服务的配置文件都放到git远程服务器上&#xff0c;让…

使用FFmpeg推流实现在B站24小时点歌直播

使用FFmpeg推流实现在B站24小时点歌直播 本文首发于个人博客 安装FFmpeg centos7 https://www.myfreax.com/how-to-install-ffmpeg-on-centos-7/ https://linuxize.com/post/how-to-install-ffmpeg-on-centos-7/ 使用FFmpeg在B站直播 https://zhuanlan.zhihu.com/p/2395…

机器学习(五) -- 监督学习(5) -- 线性回归1

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;4&#xff09; -- 集成学习方法 - 随机森林 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;5&#xff09; -- 线性回归2 前言 tips&#xff1…

Redis教程(十五):Redis的哨兵模式搭建

一、搭建Redis一主二从 分别复制三份Redis工作文件夹&#xff0c;里面内容一致 接着修改7002的配置文件&#xff0c;【redis.windows-service.conf】 port 7002 改成 port 7002 slaveof 127.0.0.1 7001 7003也同样修改 port 7003 slaveof 127.0.0.1 7001 这样就指定了700…

B站滑块登录之极验点选

滑块登录这些东西都不是很难&#xff0c;我个人的去处理的话一般会考虑三种方案&#xff0c;一个是自动化selenium 二是各类打码平台 三是ocr识别&#xff0c;本文是selenium接打码平台&#xff0c;也是个比较常规的操作。 先常规步骤跟着来吧&#xff0c;做登录的话把基本的模…

【启程Golang之旅】运算符与流程控制讲解

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…

【qt】标准型模型 下

标准型模型 一.前言二.预览数据1.获取表头2.获取数据项 三.保存文件1.文件对话框获取保存文件名2.用文件名初始化文件对象3.打开文件对象4.用文件对象初始化文本流5.写入数据 四.格式1.居右2.居中3.居左4.粗体 五.模型的信号1.解决粗体action问题2.状态栏显示信息 六.总结 一.前…

【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理&#xff0c;以及遇到的困难和总结 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 什么是搜索引…

NTFS文件系统文件寻址实操记录

前言 最近在学NTFS&#xff0c;发现网上的博客千篇一律&#xff0c;讲的不够通透&#xff0c;于是决定自己写一篇。 本文章通过寻找文件地址这个任务&#xff0c;讲述了NTFS文件系统$Boot文件、$MFT文件的结构&#xff0c;对$MFT文件中的A0、80属性进行了重点分析。 本文对于…

k8s-pod详解

一、Pod基本概念&#xff1a; 1.pod介绍&#xff1a; Pod是kubernetes中最小的资源管理组件&#xff0c;Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的&#xff0c;例如&am…

vs2013使用qt Linguist以及tr不生效问题

一、qt Linguist&#xff08;语言家&#xff09;步骤流程 1、创建翻译文件,在qt选项中 2.选择对应所需的语言&#xff0c;得到.ts后缀的翻译文件 3.创建.pro文件&#xff0c;并将.ts配置在.pro文件中 3.使用qt Linguist 打开创建好的以.ts为后缀的翻译文件&#xff0c;按图所示…

python中的条件语句

python中语句的执行顺序 默认情况下&#xff0c;python代码的执行顺序&#xff0c;是从上到下依次执行的&#xff0c;这个顺序是不会变的&#xff0c; python中的条件语句 电脑的CPU芯片是能够进行算术运算也能进行逻辑判断的。 条件语句能够表达“如果...否则...” 这样的语…

P451 try-Catch异常处理

//基本使用演示代码 public static void main(String[] args) { int num1 10; int num2 0; try { int res num1 / num2; }catch (Exception e) { System.out.println(e.getMessage()); } } public class TryCatchDetail { public static void main(String[] args) { //1. 如…

dubbo复习:(8)使用sentinel对服务进行降级

一、下载sentinel-dashboard控制台应用并在8080端口启动 二、项目添加springboot 和dubbo相关依赖&#xff08;降级规则并未持久化&#xff0c;如果需要持久化&#xff0c;如果需要持久化降级规则&#xff0c;只需增加nacos相关依赖并在nacos中进行配置&#xff0c;然后配置app…

pyside6下没有designer.exe、pyside6-uic.exe等

使用conda安装的pyside6&#xff08;conda install pyside6&#xff09;&#xff0c;发现pyside6目录下没有designer.exe、pyside6-uic.exe等&#xff1b;designer.exe在Miniconda3/Library/bin下 pyside6-uic.exe、pyside6-rcc.exe在Miniconda3\Scripts下 但是 使用pip安装…

前端nvm、nodejs、npm、cnpm、yarn安装教程(超详细图文,含卸载旧的nodejs,安装及环境变量配置)

最近换了新电脑&#xff0c;一开始在网上找了一个教程让下载nvm-noinstall.zip 压缩包解压使用&#xff0c;踩坑了&#xff0c;过程复杂最后报错无法用。 后来搜到下文教程&#xff0c;直接使用nvm。exe进行安装&#xff0c;方便快捷。下面这个文章写的很详细&#xff0c;从如何…