文章目录

前言

一、Nacos是什么能干什么?

二、使用步骤

1.引入库

3. 写一个测试

4. 启动Nacos Server

5. 发布配置到Nacos

6. 启动项目测试

总结



前言

     Spring Cloud Alibaba的目标是为微服务开发提供一站式解决方案。该项目包含开发分布式应用程序和服务所需的组件,因此开发人员可以使用Spring Cloud编程模型轻松地开发分布式应用程序。

其中的Nacos提供了非常优秀的配置中心和服务注册中心服务,并且提供了可视化的Web控制台和丰富的API接口。

本文记录了使用Nacos作为配置中心的配置过程。


一、Nacos是什么能干什么?

Nacos: Dynamic Naming and Configuration Service

引用Nacos的官方介绍:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

二、使用步骤

1.引入库

   引入maven依赖:

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${nacos-version}</version>
</dependency>

  注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

2.做一些配置

  在项目resources中新建boostrap.yml或者bootstrap.properties文件(注意不是application.yml):

spring:
  application:
    name: user-service #服务名称,它是构成 Nacos 配置管理 dataId字段的一部分,必须
  cloud:
    nacos:
      config:
        server-addr: 192.168.0.105:8848 #nacos的地址
        file-extension: properties   #配置类型,必须nacos中配置的类型对应

 

说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

3. 写一个测试

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author cloudgyb
 * 2021/2/21 17:20
 */
@RestController
@RefreshScope
public class AdminController {

	@Value("${admin.name:未知}")
	private String adminName;

	@Value("${admin.password:未知}")
	private String password;

	@GetMapping("/admin/info")
	public String getAdminInfo(){
		return adminName+":"+password;
	}
}

   @RefreshScope作用是当配置中心的配置改变时,自动刷新该类的属性值。@Value时Spring 提供的原生注解,用于注入属性值,属性的key对应Nacos配置中心的key,下面会在Nacos中配置,往下看。

4. 启动Nacos Server

cd nacos
./bin/startup.sh -m standalone

5. 发布配置到Nacos

   1、 可以使用Nacos提供的API

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=user-service.properties&group=DEFAULT_GROUP&content=admin.name=cloudgyb%0Aadmin.password=123"

返回true则发布成功。content参数指定配置内容,注意:多个配置项需要用‘\n’换行符隔开,在url中转码就是%0A。

  2、使用Nacos的Web控制台

    

spring加载nacos配置_spring加载nacos配置

 这里的配置格式选择Properties,因为项目的boostrap.yml文件中指定了file-extension为properties,必须对应起来,否则会读取不到配置。

点击发布就行了。

6. 启动项目测试

访问接口:

spring加载nacos配置_spring cloud alibaba_02

在Nacos中更改配置

spring加载nacos配置_spring cloud alibaba_03

再次访问接口:

spring加载nacos配置_微服务_04

无需重启项目,属性已经动态更改。

总结

总的来说,使用Nacos配置中心还是比较容易上手的,注意配置的时候细心,不要配置错。

Nacos官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html