1Nacos 客户端使用 · SpringCloud微服务实战 · 看云

导航

本节代码地址


前面在注册中心章节已经讲Nacos 的介绍和基本使用讲解了,下面我们就直接来讲Nacos 的配置中心功能,这一点是很不错的,把注册中心和配置中心功能合并在一起,减少了运维部署。

1. 新建项目

为了方便后面代码阅读,我们单独建一个模块
0875d14903779f07c1fedaef22c819f2_MD5.webp

2. maven 配置

这里需要引入spring-cloud-starter-alibaba-nacos-config来拉去和监听nacos的变化。另外这里和上节apollo 不同的是我们多引入了spring-cloud-starter-netflix-eureka-client,实现我们把配置放在配置配置中心,观察能否注册到Eureka上,上节apollo 的演示引入这个包也可以实现相同的效果。

<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.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

3. 应用配置

配置中需要配置nacos的地址、分组名称、配置名称、以及配置类型

spring:
  cloud:
    nacos:
      config:
        server-addr: ${nacos.ip}:8848
        group: DEFAULT_GROUP
        prefix: application
        file-extension: yaml

4. 控制层代码

这里和apollo不同的是需要加上@RefreshScope,用于监听配置修改的变化

@RestController
@RequestMapping("/config")
@RefreshScope
public class TestController {
    @Value("${fwcloud.config.name:test}")
    private String configName;

    @RequestMapping("/get")
    public String get() {
        return configName;
    }
}

5. 启动类

因为我们引入了eureka客户端的包,因此我们要使用的话需要加上@EnableDiscoveryClient注解

@EnableDiscoveryClient
@SpringBootApplication
public class FwNacosClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(FwNacosClientApplication.class, args);
    }
}

6. 启动应用

可以看到eureka上已经注册当前服务
a9a3eb6ede92fe5e60bd9f5fce0e895c_MD5.png

浏览器或Postman 输入http://localhost:8774/config/get
e781569083e93960c8dcd1d1ebed2851_MD5.png

7. 变化值

在nacos中修改fwcloud.config.name的值为nacos20200314
变更的时候可以看到控制台的变化

2020-03-14 16:52:17.932  INFO 5952 --- [-localhost_8848] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [fwcloud.config.name]

fb703d09738a4bbc084ad1cf09bdfaf1_MD5.png