【Spring实战】33 Spring Boot3 集成 Nacos 配置中心

文章目录

    • 1. 配置中心定义
    • 2. 解决哪些问题
    • 3. 常用的配置中心
    • 4. 使用示例
      • 1)没引入 Nacos 配置中心
      • 2)引入依赖
      • 3)配置Nacos连接信息
      • 4)在 Nacos 上配置属性
      • 5)在 Spring Boot 中使用配置
      • 6)启动服务&验证
      • 7)实时更新配置
    • 5. 代码参考
    • 结语

在上一篇 【Spring实战】32 Spring Boot3 集成 Nacos 服务注册中心 文章中,我们介绍了 Nacos 的定义、背景、功能和特性,并通过简单示例演示了如何在 Gateway 网关中应用。但是在微服务架构中,配置中心也是一个非常重要的组件,它可以帮助我们集中管理应用的配置信息。Nacos 作为一个优秀的配置中心工具,为微服务提供了灵活且可靠的配置管理。本文将介绍如何在 Spring Boot 项目中集成 Nacos 配置中心,实现统一的配置管理。

1. 配置中心定义

在 Spring 框架中,配置中心是指一种集中式管理应用程序配置信息的机制。它的目标是通过集中存储和管理配置,实现配置的动态更新、版本管理和统一管理,以提高系统的灵活性、可维护性和可扩展性。

2. 解决哪些问题

配置中心通常用于解决以下问题:

  • 集中管理配置:

    将应用程序的配置集中存储在一个地方,便于管理和维护,避免配置散落在各个应用实例中

  • 动态更新配置:

    允许在运行时动态修改配置,无需重启应用,从而提高系统的可用性和灵活性

  • 版本管理:

    提供配置的版本管理,方便进行配置的回滚、比较和历史查看

  • 统一配置管理:

    统一管理所有微服务的配置,确保它们之间的配置一致性,简化系统的部署和维护

3. 常用的配置中心

  • Spring Cloud Config:

    Spring Cloud提供了一个名为Spring Cloud Config的子项目,用于构建分布式系统中的配置服务和客户端。它支持配置文件存储在Git、SVN等版本控制系统中,也可以通过HTTP、JDBC等方式获取配置

  • Nacos:

    Nacos是一个综合性的服务发现和配置管理平台,它可以作为配置中心,支持动态配置管理、服务发现、服务健康监测等功能。Nacos提供了丰富的功能,适用于构建和管理云原生应用

  • Zookeeper:

    Zookeeper是一个分布式的协调服务,也可以用作配置中心。它提供了一个简单的键值存储系统,用于存储和管理配置信息

  • Consul:

    Consul是一个分布式的服务发现和配置管理工具。它支持健康检查、服务注册和发现,同时也可以用作配置中心

4. 使用示例

下面通过一个简单的示例演示 Spring Boot 项目如何使用 Nacos 配置管理中心。

在这里插入图片描述

1)没引入 Nacos 配置中心

定义一个配置文件,配置一个我们用于测试的名字,key 是 koala.user.name value 是 cheney

application.yml

server:port: 9501servlet:context-path: /account
koala:user:name: cheney

写一个 REST 请求,并且使用 Spring 提供的 @Value("${koala.user.name}") 来从配置文件中获取名字

HelloController.java

package com.cheney.koala.account.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Value("${koala.user.name}")private String userName;@GetMapping("hello")public String hello() {return String.format("Hello %s", userName);}
}

创建一个普通的 Spring boot 启动类

KoalaAccountApplication.java

package com.cheney.koala.account;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class KoalaAccountApplication {public static void main(String[] args) {SpringApplication.run(KoalaAccountApplication.class, args);}
}

启动服务&验证

访问下面的 URL,然后就可以读取到了我们提前在 application.yml 中配置的名字

http://localhost:9501/account/hello

在这里插入图片描述

这个时候存在一个问题,如果我们需要修改名字的话,那么就需要去修改代码并且重启服务才可以

那么如何解决呢?引入 Nacos 配置中心!

2)引入依赖

继续在上面的 Spring Boot 项目中引入 Nacos 配置中心的依赖。在pom.xml文件中添加如下依赖:

引入了如下配置中心的依赖 spring-cloud-starter-alibaba-nacos-config

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2022.0.0.0-RC1</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>

3)配置Nacos连接信息

bootstrap.yml 中配置 Nacos 服务器的连接信息

bootstrap.yml

spring:application:name: accountcloud:nacos:discovery:server-addr: 127.0.0.1:8848

其中 127.0.0.1:8848 是实际的 Nacos 服务器地址,account 是 Nacos 命名空间

4)在 Nacos 上配置属性

首先启动 Nacos 服务并登录管理页面

http://localhost:8848/nacos

在这里插入图片描述

点击 配置列表 - 创建配置

在这里插入图片描述

分别输入 Data ID,描述信息,此处我选择了 YAML 其他配置格式也是可以的,然后就是配置内容了

信息填写完成后,点击 发布

在这里插入图片描述

这样一条配置信息就创建好了。可以点击后面的一系列操作按钮进行增删改查操作

5)在 Spring Boot 中使用配置

继续使用上面的 Spring Boot 项目代码,增加一个连接 Nacos 的配置

bootstrap.yml

spring:application:name: accountcloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yaml

这里配置了 Nacos 的地址 127.0.0.1:8848,已经我们使用的配置文件格式 yaml

6)启动服务&验证

再次访问下面的 URL,然后就可以读取到了我们提前在 Nacos 配置中心中配置的名字

http://localhost:9501/account/hello

在这里插入图片描述

7)实时更新配置

我们在 Nacos 配置中心中修改 koala.user.name 对应名字的值,保存配置。

在这里插入图片描述

点击发布之后,可以看到修改哪里了。然后确认发布,确定,即可。

在这里插入图片描述

然后再次访问下面的 URL,

http://localhost:9501/account/hello

在这里插入图片描述

你会发现,为什么没有显示我们新修改的值呢???它不是实时刷新么。。。。

原因是,如果我们想要实时刷新,则需要在 HelloController 上新加一个 @RefreshScope

在这里插入图片描述

然后我们重启服务,访问 URL

http://localhost:9501/account/hello

在这里插入图片描述

再去将配置中心中 koala.user.name 对应名字的值修改为 cheney,保存配置。

在这里插入图片描述

再次访问 URL

http://localhost:9501/account/hello

在这里插入图片描述

发现可以动态刷新成 Nacos 配置中心中的最新值啦

5. 代码参考

https://gitee.com/cheney09/koala-system

结语

本文我们成功的将 Spring Boot 项目集成了 Nacos 配置中心,实现了动态配置管理。Nacos的优秀特性使得配置的管理变得更加灵活和便捷,适用于各种规模的微服务项目。希望这篇文章能够帮助你顺利地将 Nacos 配置中心引入到你的 Spring Boot 项目中。

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

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

相关文章

spring boot学习第九篇:操作mongo的集合和集合中的数据

1、安装好了Mongodb 参考&#xff1a;ubuntu安装mongod、配置用户访问、添删改查-CSDN博客 2、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns…

奠定基础:用于机器学习的微积分、数学和线性代数

一、说明 机器学习是一个引人入胜的领域&#xff0c;它使计算机能够从数据中学习并做出预测或决策&#xff0c;而无需明确编程。然而&#xff0c;在幕后&#xff0c;有一个坚实的数学和线性代数基础&#xff0c;构成了机器学习算法的支柱。在本文中&#xff0c;我们将探讨在深入…

C++多线程3

生产者消费者模型 OS经典问题&#xff0c;生产者消费者模型,empty和full还有mutex对应到C上如何处理看代码即可 #include <iostream> #include <thread> #include <mutex> #include <condition_variable> #include <queue> using namespace st…

数据中心机房建设的关键痛点及解决方案

随着信息技术的飞速发展&#xff0c;数据中心机房已成为企业信息系统的核心。然而&#xff0c;在机房系统的建设过程中&#xff0c;投资及运行维护成为项目管理的关键痛点。合理的投资决策和高效的运维管理是确保机房系统经济性和可靠性的重要因素。本文将探讨机房系统建设的投…

那些不输于乙游男主人设的国漫男主

最近乙游的势头越来越猛&#xff0c;新宠旧爱一起上阵&#xff0c;叫人应接不暇。在二次元的世界里&#xff0c;乙游男主们凭借着超凡的魅力&#xff0c;成为了无数少女心中的理想对象。他们或冷酷、或温柔、或阳光、或神秘&#xff0c;每一个角色都有着独特的性格和故事。 乙游…

NLP_统计语言模型的发展历程

文章目录 统计语言模型发展的里程碑&#xff1a; 上半部分是语言模型技术的进展&#xff1b;下半部分则是词向量&#xff08;词的表示学习&#xff09;技术的发展。其中&#xff0c;词向量表示的学习为语言模型提供了更高质量的输入信息&#xff08;词向量表示&#xff09; 1…

性能测试常用术语

之前在性能测试过程中&#xff0c;对于某些其中的术语一知半解&#xff0c;导致踩了很多坑。这篇博客&#xff0c;就常见的一些性能测试术语进行一次浅析。。。 负载 对被测系统不断施加压力&#xff0c;直到性能指标超过预期或某项资源使用达到饱和&#xff0c;以验证系统的处…

玩美移动为花西子海外官网打造AR虚拟试妆决方案

全球领先的增强现实&#xff08;AR&#xff09;及人工智能&#xff08;AI&#xff09;美妆科技领导者及玩美系列APP开发商——玩美移动&#xff08;纽交所代码&#xff1a;PERF&#xff09;于近日宣布携手知名美妆品牌花西子&#xff0c;在其线海外官方网页提供多项彩妆虚拟试妆…

C语言搭配EasyX实现贪吃蛇小游戏

封面展示 内部展示 完整代码 #define _CRT_SECURE_NO_WARNINGS #include<easyx.h> #include<stdio.h> #include<mmsystem.h> #pragma comment (lib,"winmm.lib") #define width 40//宽有40个格子 #define height 30//长有40个格子 #define size 2…

ubuntu22.04安装部署02:禁用显卡更新

一、查看可用显卡驱动 ubuntu-drivers devices 二、查看显卡信息 # -i表示不区分大小写 lspci | grep -i nvidia nvidia-smi 三、查看已安装显卡驱动 cat /proc/driver/nvidia/version 四、锁定显卡升级 使用cuda自带额显卡驱动&#xff0c;居然无法&#xff0c;找到如何锁…

TRUNCATE TABLE和DELETE FROM对比

相同点:用于删除数据,同时保留表结构. 不同点: TRUNCATE比DELETE更快(数据量小可能体现不出来,单数据量大就很明显了) 原因:TRUNCATE是DDL(数据定义语言)DELETE是逐行删除属于(DML) TRUNCATE 不会产生大量日志,但DELETE删除会产生大量日志 DELETE FROM 可以加WHERE子句指定…

AI-数学-高中-17-三角函数的定义

原作者视频&#xff1a;三角函数】4三角函数的定义&#xff08;易&#xff09;_哔哩哔哩_bilibili 初中&#xff1a; 高中&#xff1a;三角函数就是单位圆上的点的横纵坐标(x0,y0)。 示例1&#xff1a; 规则&#xff1a; 示例2&#xff1a; 示例3.1&#xff1a; 示例3.2 示例4…

【异常检测复现】【DeSTSeg】在虚拟环境中完成配置

文章目录 1.在虚拟环境中安装git2.更改虚拟环境中包的安装位置3.安装anomalib4.安装虚拟环境5.根据requirements.txt安装包6.选择所建立的虚拟环境&#xff0c;并设置解释器7.查看文件夹的内容8.下载数据集9.引用 记录复现过程中安装各种包的命令 下载数据集到本地 1.在虚拟环境…

(十二)springboot实战——SSE服务推送事件案例实现

前言 SSE&#xff08;Server-Sent Events&#xff0c;服务器推送事件&#xff09;是一种基于HTTP协议的服务器推送技术。它允许服务器向客户端发送异步的、无限长的数据流&#xff0c;而无需客户端不断地轮询或发起请求。这种技术可以用来实现实时通信、在线聊天、即时更新等功…

C++并发编程 -2.线程间共享数据

本章就以在C中进行安全的数据共享为主题。避免上述及其他潜在问题的发生的同时&#xff0c;将共享数据的优势发挥到最大。 一. 锁分类和使用 按照用途分为互斥、递归、读写、自旋、条件变量。本章节着重介绍前四种&#xff0c;条件变量后续章节单独介绍。 由于锁无法进行拷贝…

Day 17------C语言收尾之链表的删除、位运算、预处理、宏定义

链表 空链表&#xff1a; 注意&#xff1a;函数不能返回局部变量的地址 操作&#xff1a; 1.创建空链表 2.头插 3.尾插 4.链表遍历 5.链表的长度 free&#xff1a;释放 删除&#xff1a; 头删 void popFront(struct Node *head) { //1.p指针变量指向首节点 //2.断…

ubuntu22.04 安装部署01:禁用内核更新

一、前言 ubunut22.04系统安装以后&#xff0c;内核更新会导致各种各样的问题&#xff0c;因此锁定初始安装环境特别重要&#xff0c;下面介绍如何锁定内核更新。 二、操作方法 2.1 查看可用内核 dpkg --list | grep linux-image dpkg --list | grep linux-headers dpkg --…

NLP_NLP技术的演进史

文章目录 起源: NLP 的起源可以追溯到阿兰图灵在20 世纪50年代提出的图灵测试。图灵测试的基本思想是&#xff0c;如果一个计算机程序能在自然语言对话中表现得像一个人&#xff0c;那么我们可以说它具有智能。从这里我们可以看出&#xff0c;AI最早的愿景与自然语言处理息息相…

Multisim14.0仿真(四十二)基于74LS183的8位表决器设计

一、74LS183简介&#xff1a; 74LS183是一种4位高速全加器&#xff0c;用于数字电路中的加法运算。74LS183输入端包括两个4位二进制数和一个进位信号&#xff0c;输出端包括1个4位二进制数和一个进位信号。 74LS138具有快速响应、低功耗灯特点&#xff0c;能实现高校的数字匀速…

计算huggingface模型占用硬盘空间的实战代码

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…