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

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

  • 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成功。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络套接字知识(非常详细)从零基础入门到精通

本节重点 认识IP地址, 端口号, 网络字节序等网络编程中的基本概念; 学习socket api的基本用法; 一、预备知识 1.理解源IP地址和目的IP地址 ⭐在IP数据包头部中&#xff0c;有两个IP地址&#xff0c;分别叫做源IP地址和目的IP地址。 思考: 我们光有IP地址就可以完成通信了…

Linux Tcpdump抓包入门

Linux Tcpdump抓包入门 一、Tcpdump简介 tcpdump 是一个在Linux系统上用于网络分析和抓包的强大工具。它能够捕获网络数据包并提供详细的分析信息&#xff0c;有助于网络管理员和开发人员诊断网络问题和监控网络流量。 安装部署 # 在Debian/Ubuntu上安装 sudo apt-get install…

基于Perfetto 解读一帧的生产消费流程 Android >= S Qualcomm

广告 首先帮我朋友打个广告 我们一起在运营一个视频号 感兴趣的可以帮忙点击右边这个小铃铛 铃铛 序 1.这个流程里面的东西如果展开其实是有很多的 内容其实还是比较浅显的 sf处就不贴源码了 关一个Vsync就有的解释 当然笔者在流程上先形成一个思维闭环 2.如有小伙伴需要 笔…

C++完成特色旅游管理信息系统

背景&#xff1a; 继C完成淄博烧烤节管理系统后&#xff0c;我们来到了特色旅游管理信息系统的代码编写&#xff0c;历史链接点下方。 C完成淄博烧烤节管理系统_淄博烧烤总账管理系统的-CSDN博客 问题描述&#xff1a; 为了更好的管理各个服务小组&#xff0c;开发相应的管…

C# 拓展方法(涉及Linq)

拓展方法 定义一个扩展方法使用扩展方法例如再举个例子终极例子 注意事项与Linq 在C#中&#xff0c;扩展方法是一种特殊的静态方法&#xff0c;允许开发者向现有类型“添加”新的方法&#xff0c;而无需修改该类型的源代码或创建新的派生类型。这种机制提供了一种更为灵活的方式…

结构化开发方法(数据流图)

一、系统设计基本原理 二、系统总体结构设计 三、数据流图 数据流图

出口加工园区gis三维可视化系统全面整合了企业线上线下资源与服务

园区作为产业协同和经济推动的关键节点&#xff0c;承载着企业生产、物流和服务等多种功能&#xff0c;数字孪生三维可视化技术的出现&#xff0c;通过数字孪生和3D可视化的方式&#xff0c;对园区情况和运营实现实时监测和管理&#xff0c;提高了运营效率和协同性。 园区数字孪…

STM32 学习——1. STM32最小系统

这是一个最小系统的测试&#xff0c;LED灯会进行闪烁。选用PC13口&#xff0c;因为STM32F103C8T6 硬件开发板中&#xff0c;这个端口是一个LED 1. proteus8.15 原理图 2. cubemx 新建工程 3. keil 代码 while (1){HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);HAL_Delay(100);…

Css 提高 - 获取DOM元素

目录 1、根据选择器来获取DOM元素 2.、根据选择器来获取DOM元素伪数组 3、根据id获取一个元素 4、通过标签类型名获取所有该标签的元素 5、通过类名获取元素 目标&#xff1a;能查找/获取DOM对象 1、根据选择器来获取DOM元素 语法&#xff1a; document.querySelector(css选择…

一套MES系统源码,技术架构springboot + vue-element-plus-admin

一、系统概述 MES全称Manufacturing Execution System&#xff0c;即制造执行系统&#xff0c;它是一套面向生产车间的管理系统。MES系统可用于实现制造业自动化和数字化转型&#xff0c;它可以帮助车间管理人员监控、跟踪、记录和控制从原材料到成品的产品制造流程&#xff0…

掌握Python基本语法的终极指南【基本语法部分】

一、基本语法部分 1.简单数据类型 1.1字符串类型及操作 字符串访问&#xff1a; 1.索引访问 mystr"Hello world" #索引访问 print(mystr[0]) #H print(mystr[-1]) #d print(mystr[-7]) #o print(mystr[6]) #w 2.切片访问 [头下标&#xff1a;尾下标] &#x…

基于Java、SpringBoot和uniapp在线考试系统安卓APP和微信小程序

摘要 基于Java、SpringBoot和uniapp的在线考试系统安卓APP微信小程序是一种结合了现代Web开发技术和移动应用技术的解决方案&#xff0c;旨在为教育机构提供一个方便、高效和灵活的在线考试平台。该系统采用Java语言进行后端开发&#xff0c;使用SpringBoot框架简化企业级应用…

储能服务系统架构:实现能源可持续利用的科技之路

随着可再生能源的快速发展和能源系统的智能化需求增加&#xff0c;储能技术作为能源转型和可持续发展的关键支撑之一&#xff0c;备受各界关注。储能服务系统架构的设计和实现将对能源行业产生深远影响。本文将探讨储能服务系统架构的重要性和关键组成部分&#xff0c;旨在为相…

【C++高阶(一)】继承

目录 一、继承的概念 1.继承的基本概念 2.继承的定义和语法 3.继承基类成员访问方式的变化 ​编辑 4.总结 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 1.派生类中的默认构造函数 2.派生类中的拷贝构造函数 3.派生类中的移动构造函数…

二维轮廓自动添加屋顶

1、背景介绍 在提取建筑物轮廓点后&#xff0c;对轮廓点进行简化得到建筑物轮廓线。将轮廓线进行拉伸&#xff0c;变可得到建筑物白膜&#xff0c;如下图所示。这种形状比较简单&#xff0c;所重建模型实质上就是一个个立方体盒子&#xff0c;缺少屋顶细节&#xff0c;视觉观感…

玩转盲盒潮流:从0到1搭建小程序平台

在当前的消费市场中&#xff0c;盲盒已成为一种炙手可热的消费模式&#xff0c;凭借其神秘性和随机性&#xff0c;迅速俘获了年轻消费者的心。作为一位有志于创新并紧跟市场趋势的创业者&#xff0c;你可能会想&#xff1a;如何从0到1搭建一个属于自己的盲盒小程序平台&#xf…

SpringBoot高级原理详解

文章目录 1 SpringBoot自动化配置原理01-SpringBoot2高级-starter依赖管理机制02-SpringBoot2高级-自动化配置初体验03-SpringBoot2高级-底层原理-Configuration配置注解04-SpringBoot2高级-底层原理-Import注解使用105-SpringBoot2高级-底层原理-Import注解使用206-SpringBoot…

linux---线程控制

线程和进程 以前我们要同时跑多个程序&#xff0c;可以通过fork()多个子进程&#xff0c;然后通过系统函数进行程序的替换&#xff0c;但是创建进程代价大&#xff0c;不仅要拷贝一份父进程的地址空间&#xff0c;页表&#xff0c;文件表述符表等。但是线程不需要因为是进程的…

frp搭建内网流量转发

前提条件 有一台外网服务器 背景介绍 外网服务器linux内网客户端Windows 10下载frp软件安装包 下载地址:https://github.com/fatedier/frp/releases 服务端软件包下载 客户端软件包下载 服务端部署 解压软件包 tar xzvf frp_0.58.0_linux_amd64.tar.gz修复加压后文件夹名…

TemperMonkey在百度搜索页面,提供跳转其他平台搜索、与批量打开搜索结果的功能的脚本代码

代码 // UserScript // name 百度搜索。链接其他搜索。跳转功能。 // namespace http://tampermonkey.net/ // version 0.1(2020-6-24 17:37:27) // description try to take over the world! // author gwd // match https://www.baidu.com/s?…