【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.hqwc.cn/news/449090.html

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

相关文章

Latex学习记录

目录 1.Latex各种箭头符号总结 2.[Latex]公式编辑&#xff0c;编号、对齐 3.Latex公式编号: 多行公式多编号&#xff0c;多行公式单编号 4.LaTex中输入空格以及换行 1.Latex各种箭头符号总结 箭头符号 - ➚ (piliapp.com)https://cn.piliapp.com/symbol/arrow/Latex各种箭头…

2024美国大学生数学建模竞赛美赛B题matlab代码解析

2024美赛B题Searching for Submersibles搜索潜水器 因为一些不可抗力&#xff0c;下面仅展示部分代码&#xff08;很少部分部分&#xff09;和部分分析过程&#xff0c;其余代码看文末 Dthxlsread(C:\Users\Lenovo\Desktop\Ionian.xlsx); DpDth(:,3:5); dy0.0042; dx0.0042; …

云服务器安全组、防火墙、端口问题,结合telnet解决项目部署无法访问

无论是运维还是后台亲自操刀在云服务器上部署项目&#xff0c;往往会遇到项目部署上去了&#xff0c;也确定项目正常运行&#xff0c;但还是没法访问的问题。 如果没有经验的小伙伴&#xff0c;很容易陷入疑惑的状态&#xff0c;无从下手解决。 其实这涉及到云平台安全组、服…

如何在Windows部署GoLand并通过SSH远程连接Linux服务器

文章目录 1. 安装配置GoLand2. 服务器开启SSH服务3. GoLand本地服务器远程连接测试4. 安装cpolar内网穿透远程访问服务器端4.1 服务器端安装cpolar4.2 创建远程连接公网地址 5. 使用固定TCP地址远程开发 本文主要介绍使用GoLand通过SSH远程连接服务器&#xff0c;并结合cpolar内…

基于springboot校园二手书交易管理系统源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括乐校园二手书交易管理系统的网络应用&#xff0c;在外国二手书交易管理系统已经是很普遍的方式&#xff0c;不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统…

调试以及发布npm组件

开发原因&#xff1a; 由于公司自己的封装到npm的组件有点问题&#xff0c;负责人由在忙其他&#xff0c;就由我去负责改改&#xff0c;中途出了不少问题&#xff0c;记录一下。 一、下载源码 第一步肯定是去git上把组件的源码下载下来&#xff0c;这一步没什么好说&#xf…

redis 6.x集群搭建

redis6集群搭建 安装文件下载 redis-6.2.6.tar.gz 编译 tar -zxvf redis-6.2.6.tar.gz cd redis-6.2.6/ make MALLOClibc make install PREFIX/opt/soft/redis复制可执行文件 cp /opt/soft/redis/redis-cli /usr/bin/redis-cli cp /opt/soft/redis/redis-server /usr/bi…

基于最新koa的Node.js后端API架构与MVC模式

Koa 是一个由 Express 原班人马打造的现代 Web 框架&#xff0c;用于 Node.js。它旨在提供一个更小、更富有表现力和更强大的基础&#xff0c;用于 Web 应用和 API 开发。Koa 不捆绑任何中间件&#xff0c;它提供了一个优雅的方法以组合不同的中间件来处理请求和响应。 Koa 的核…

【vue】报错 Duplicate keys detected 解决方案

错误描述&#xff1a;Duplicate keys detected. This may cause an update error.错误直译&#xff1a;检测到重复的键。这可能会导致错误。错误原因&#xff1a;有相同父元素的多个子元素的v-for有相同的key值。 解决方法&#xff1a; return:{dataList:[{name:张三&#xf…

爱上算法:每日算法(24-2月2号)

&#x1f31f;坚持每日刷算法&#xff0c;将其变为习惯&#x1f91b; 题目链接&#xff1a;101. 对称二叉树 最开始肯定是比较简单的想法&#xff0c;就是遍历左右节点呀&#xff0c;不相等我就直接返回false。 但是这样错了&#xff0c;我们要的是以根节点为轴&#xff0c;而…

【Springcloud篇】学习笔记十(十七章):Sentinel实现熔断与限流——Hystrix升级

第十七章_Sentinel实现熔断与限流 1.Sentinel介绍 1.1是什么 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 用来代替Hystrix Sentinel 具有…

【IM】长连接网关设计探索(一)

目录 1.长连接网关的必要性2. 设计目标2.1 技术挑战2.2 技术目标 3. 方案选型3.1 网关IP地址的选择3.1.1 使用httpDNS服务3.1.2 自建http server作为IP config server3.1.3 最佳方案 3.2 高并发收发设计3.2.1 C10K问题3.2.2 方案探索双协程监听channel实现全双工 一个定时器 1…