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

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

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

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值