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

文章目录

    • [1. 配置中心定义](#1. 配置中心定义)
    • [2. 解决哪些问题](#2. 解决哪些问题)
    • [3. 常用的配置中心](#3. 常用的配置中心)
    • [4. 使用示例](#4. 使用示例)
    • [5. 代码参考](#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

yml 复制代码
server:
  port: 9501
  servlet:
    context-path: /account
koala:
  user:
    name: cheney

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

HelloController.java

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

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

xml 复制代码
        <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

yml 复制代码
spring:
  application:
    name: account
  cloud:
    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

yml 复制代码
spring:
  application:
    name: account
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-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 项目中。

相关推荐
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
荆州克莱3 小时前
mysql中局部变量_MySQL中变量的总结
spring boot·spring·spring cloud·css3·技术
zquwei3 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
火烧屁屁啦3 小时前
【JavaEE进阶】初始Spring Web MVC
java·spring·java-ee
岁岁岁平安4 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA4 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
北辰浮光4 小时前
[spring]XML配置文件标签
xml·spring
Q_19284999064 小时前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
Q_19284999064 小时前
基于Spring Boot的营销项目系统
spring boot
ZSYP-S4 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring