天天看点

spring cloud Alibaba : Nacos作为配置中心

上篇快速通道:spring cloud Alibaba : Nacos作为服务注册发现组件

在上一篇文章中讲解了如何使用Nacos作为服务注册中心。Nacos除了可以作为服务注册中心,它还有服务配置中心的功能。类似于consul config,Nacos 是支持热加载的。本篇文章将讲述如何使用Nacos作为配置中心。

本文是的代码是在上一篇(spring cloud Alibaba : Nacos作为服务注册发现组件 )的nacos-provider基础上进行改造实现的.

  1. 首先引入相关的jar包:
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
	<version>0.9.0.RELEASE</version>
</dependency>
           
  1. bootstrap.yml文件中配置如下,使用nacos作为配置中心,一定要使用bootstrap.yml格式配置文件
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        prefix: nacos-provider
  profiles:
    active: dev
           

在上面的配置中,配置了nacos config server的地址,配置的扩展名是yaml或者yml(目前仅支持yaml和properties,不管是yaml还是yml一定要保持和nacos上边的Data ID一致)。sever.port的属性在nacos中配置。上面的配置是和Nacos中的dataId 的格式是对应的,nacos的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}
           

prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}

file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

  1. 启动nacos,登陆localhost:8848/nacos,创建一个data id:
    spring cloud Alibaba : Nacos作为配置中心

    注意Data ID的数据格式

    写一个对外开放的接口,在Controller上添加 @RefreshScope 实现配置的热加载

@RestController
@RefreshScope
public class ProviderContreoller {

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

    @GetMapping("/user")
    public String user(){
        return "hi: "+name;
    }
}
           

启动项目,访问此接口可以返回在nacos配置中的值,在不重启项目的情况下,修改nacos配置配置文件中user.name的值,重新访问,返回更改后的值。nacos实现了热加载功能。

本项目示例代码:https://github.com/zhangwenbinbin/spring-cloud-alibaba/tree/master/nacos-provider

继续阅读