Spring Cloud Alibaba: Nacos-配置中心

简介

Nacos除了实现了服务的注册发现之外,还将配置中心功能整合在了一起。通过Nacos的配置管理功能,我们可以将整个架构体系内的所有配置都集中在Nacos中存储。这样做的好处,在以往的教程中介绍Spring Cloud Config时也有提到,主要有以下几点:

  • 分离的多环境配置,可以更灵活的管理权限,安全性更高
  • 应用程序的打包更为纯粹,以实现一次打包,多处运行的特点

如果对配置中心概念不理解可以回顾另一篇博客,https://blog.csdn.net/u014553029/article/details/88560678
本文主要记录:Nacos作为配置中心的功能

一、在Nacos管理平台新建配置

进入Nacos的控制页面,在配置列表功能页面中,点击右上角的“+”按钮,进入“新建配置”页面,如下图填写内容:
在这里插入图片描述

配置说明:

  • Data ID:填入nacos-config-client.yml
  • Group:不修改,使用默认值DEFAULT_GROUP
  • 配置格式:选择YAML
  • 配置内容:应用要加载的配置内容,这里仅作为示例,做简单配置,比如:
user:
    name: ouyang
    age: 18
    sex: male
server:
    port: 8888
    context-path: /config-demo1

二、获取&使用配置

2.1 创建一个Spring Boot应用,可以命名为:nacos-config-client

2.2 编辑pom.xml,加入必要的依赖配置,比如:

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</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-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

上述内容主要三部分:

  • parent:定义spring boot的版本
  • dependencyManagement:spring cloud的版本以及spring cloud alibaba的版本,由于spring cloud alibaba还未纳入spring cloud的主版本管理中,所以需要自己加入
  • dependencies:当前应用要使用的依赖内容。这里主要新加入了Nacos的配置客户端模块:spring-cloud-starter-alibaba-nacos-config。由于在dependencyManagement中已经引入了版本,所以这里就不用指定具体版本了。

2.3 编辑配置文件bootstrap.properties,并配置服务名称和Nacos地址

# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
# Nacos认证信息
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
#spring.cloud.nacos.config.contextPath=/nacos
# 应用名称
spring.application.name=nacos-config-client
server.port=8888
# 设置配置中心服务端地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 配置文件格式
spring.cloud.nacos.config.file-extension: yaml
# Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
# spring.cloud.nacos.config.namespace=

特别说明:这里必须使用bootstrap.properties。同时,spring.application.name值必须与上一阶段Nacos中创建的配置Data Id匹配(除了.properties或者.yaml后缀)

2.4 使用配置

定义一个Controller,其中通过@Value注解,注入项目中的配置(默认为空字符串),这个配置会通过/config接口返回,用于验证我们系统是否已经加载到相关配置。另外,这里还有一个比较重要的注解@RefreshScope,主要用来让这个类下的配置内容支持动态刷新,也就是当我们的应用启动之后,修改了Nacos中的配置内容之后,这里也会马上生效。

@RestController
@RefreshScope
@RequestMapping("config")
public class NacosConfigController {
    
    

    @Value("${user.name}")
    private String userName;

    @Value("${user.age:}")
    private String userAge;

    @Value("${user.sex}")
    private String userSex;

    @GetMapping
    public String getUserName() {
    
    
        String userConfig = String.format("userName:%s, userAge:%s, userSex:%s",userName,userAge,userSex);
        System.out.println(userConfig);
        return userConfig;
    }
}

2.5 验证配置读取与动态配置获取

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u014553029/article/details/113644087