概述:我们前面介绍过 Nacos 可以为我们提供服务注册与发现,以及实现了配置中心功能,本章将介绍nacos 配置中心的使用方法,以及其不同场景下的配置方式。在前面我们介绍过nacos的领域模型(下图),知道一个微服务工程读取的配置由 命名空间及分组和其dataId 进行唯一确定。

  • NameSpace:命名空间 默认为public,其作用可以用来实现环境隔离作用,比如我们的开发环境、测试环境、生产环境。
  • Group:默认分组为DEFAULT_GROUP,Group 可以将不同的微服务进行分组划分。
  • Service/DataId: 也就是微服务工程,一个微服务工程可以有多个集群中心,比如一个消费者工程可以使用两个中心,每个中心读取不同的配置文件,每个中心内可以有多个实例实现集群。。

环境:SpringBoot 2.2.2.RELEASE + SpringCloud Hoxton.SR1 + SpringCloud Alibaba 2.1.0.RELEASE

一、项目基础配置搭建

主要步骤:

  1. 创建工程,引入依赖
  2. 创建两个配置文件
  3. 创建主启动类
  4. 创建业务类读取配置
  5. nacos 服务端配置发布测试

1,创建配置中心客户端子工程nacos_config_client,引入相关依赖 

主要依赖:spring-cloud-starter-alibaba-nacos-config

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>SpringCloud</artifactId><groupId>com.xiaohui.springCloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>nacos_config_client</artifactId><dependencies><dependency><groupId>com.xiaohui.springCloud</groupId><artifactId>cloud-api-common</artifactId><version>${project.version}</version></dependency><!-- SpringCloud Alibaba nacos --><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><!-- web依赖开始 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- web依赖结束 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

父工程配置pom 参见:《SpringCloud(二) 生产者、消费者工程搭建与调用》

2,创建配置其配置文件bootstrap.yml、application.yml

我们知道SpringBoot工程中 bootstrap.yml 文件加载优先级高于 application.yml 。nacos也是一样先通过bootstrap.yml 从配置中心获取配置后,再结合application.yml中的配置项目 进行启动项目。

F:\SpringCloud\nacos_config_client\src\main\resources\bootstrap.yml

server:port: 3377
spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: 127.0.0.1:8848 #nacos 服务注册中心地址config:server-addr: 127.0.0.1:8848 #nacos 服务配置中心地址file-extension: yaml #指定读取的为yaml格式配置

F:\SpringCloud\nacos_config_client\src\main\resources\application.yml

spring:profiles:active: dev

通过上面两个文件的配置我们已经确定了取的服务端的配置文件dataId。 dataId的完整格式如下:

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

即:nacos-config-client-dev.yaml 也就是我们在下面的nacos服务端新增配置时的dataId值。

3,编写主启动类

com.xiaohui.springcloud.NacosApplication.java 。启动类中添加@EnableDiscoveryClient 注解 启用其服务注册发现功能

package com.xiaohui.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class NacosApplication {public static void main(String[] args) {SpringApplication.run(NacosApplication.class,args);}
}

4,创建业务类读取配置

创建controller类,读取配置中心中配置的config.name 。controller 类需要添加 @RefreshScope 实现动态刷新获取配置功能。

package com.xiaohui.springcloud.controller;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;@RestController
@RefreshScope //支持nacos的动态刷新功能
public class ConfigController {@Value("${config.name}")public String name;@GetMapping("/get/cfgname")public String getPayment(){return  "name:"+name;}
}

5,nacos 服务端配置发布测试

我们在nacos配置列表菜单下的public命名空间下新增配置

dataId 命名为配置文件中我们配置好的dataId 格式 nacos-config-client-dev.yaml。使用默认分组以及yaml格式的配置文件。

配置完成后,我们启动客户端工程,访问 http://127.0.0.1:3377/get/cfgname

我们修改其配置内容为 hello nacos!

发布后,再次访问,已经更为为最新的配置内容。

二、根据不同后缀名读取不同配置

1,nacos 配置管理添加配置信息 命名为nacos-config-client-prod.yaml 表示生产环境配置。

2,修改我们的application.yml 文件调整其application.yml 文件中  spring.profiles.active 值为 prod.

重启客户端工程,再次访问我们发现此时 应用读取的配置文件为我们新创建的dataId中的值。

三、根据不同分组读取不同配置

1,在配置文件bootstrap.yml中添加spring.cloud.nacos.config.group 配置项,指定其分组为PROD_GROUP

2,nacos 控制台配置列表菜单下 新增配置

3,重启应用,访问:

四、根据命名空间读取不同配置

1,nacos 控制台 新增命名空间

配置列表上面也会出现该命名空间

2,该命名空间下新增配置项,分组指定为PROD_GROUP

新增namespace 后会生成一个命名空间id。如上图中 配置管理后面的长串字符。

3,修改nacos 客户端bootstrap.yml 文件 添加 spring.cloud.nacos.config.namespace 键,值为命名空间id,上一步骤生成的字符串。

4,重启客户端工程,进行访问:

通过返回我们看到,此时获取的为我们指定命名空间下的配置文件内容。

Alibaba Nacos配置中心功能介绍与不同命名空间、分组等配置相关推荐

  1. Apollo架构体系、Apollo运行原理、Apollo配置中心简单介绍(一)

    笔者在工作中遇到如下问题,随着程序功能越多,配置文件不断增加,一些功能的开关.服务器地址.接口地址.不同环境的一些配置文件不同,这些在每次发布不同环境.更新项目时都比较繁琐,后来学习微服务时接触到了S ...

  2. SpringCloud微服务应用-config配置中心(介绍、搭建、动态刷新、测试)

    文章目录 前言 一.传统应用配置痛点 二.Config 配置中心介绍 三.服务端Config Server搭建 1.pom依赖 2.application启动类配置 3.application.yml ...

  3. Spring Cloud Alibaba - 19 Nacos Config配置中心加载不同微服务的通用配置的两种方式

    文章目录 Pre 实现 方式一 通过 shared-dataids 方式 方式二 通过 ext-config方式 配置文件优先级 源码 Pre Spring Cloud Alibaba - 18 Na ...

  4. Spring Cloud 系列之 Alibaba Nacos 注册中心(一)

    前言 从本章节开始,我们学习 Spring Cloud Alibaba 相关微服务组件. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发 ...

  5. Spring cloud Alibaba Nacos注册中心(2) NacosNamingService

    NacosNamingService 文章目录 NacosNamingService 1.NamingProxy 2.BeatReactor 3.HostReactor 3.1 初始化 3.2 Fai ...

  6. 会声会影2023旗舰版中文版永久功能介绍,会声会影版本系统要求配置及使用技巧

    会声会影2023旗舰版是一款广受欢迎的视频编辑软件,它的最新版本,会声会影2023,已经发布.在这篇文章中,我们将探讨会声会影2023的新功能以及它对视频制作人员的影响. 会声会影20233旗舰版带来 ...

  7. SpringCloud学习(十八):Config分布式配置中心的介绍与搭建

    目录 一.概述 1.分布式系统面临的配置问题 2. Config配置中心是什么 3.Spring Config能做什么 二.Config总控中心配置与测试 1.在Gitee上新建仓库 2.本地硬盘目录 ...

  8. 统一配置中心对比介绍

    一.Apollo和Spring Cloud Config配置中心对比 二.apollo相比于spring-cloud-config有什么优势 https://github.com/ctripcorp/ ...

  9. Java行之有效的学习方法,Java直播课:Spring Cloud Alibaba Nacos 注册中心

    Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...

最新文章

  1. 《JAVA与模式》之抽象工厂模式
  2. short s1 = 1; s1 = s1 + 1; 有错吗?short s1 = 1; s1 += 1 有错吗
  3. python--微信小程序获取手机号码报错
  4. java解析c的结构体_解析C语言中结构体struct的对齐问题
  5. 基于深度学习的番茄叶部病害识别模型
  6. 计算机图形设计案例,9《计算机图形图像的设计的案例实训题.doc
  7. springboot集成log4j
  8. gps导航卫星星历及历书参数意义
  9. java 本地文件上传到服务器,java本地文件上传到远程服务器
  10. DOS计算机设置登录密码,bios开机密码怎么设置或取消?bios开机密码操作介绍
  11. jeecms oracle v5_jeecms 基本架构研究
  12. Libero Soc v11.9的安装以及证书的获取(2021新版)
  13. Excel VBA将所有Sheet重命名为单元格a1的名称
  14. html超酷图片墙特效代码,超酷超绚精美图片展示效果代码(一)
  15. 缺失数据填补基础方法(2)——Random Forest (MissForest)填补
  16. python属于面向对象的还是面向过程的呀-python中的面向对象和面向过程
  17. 通过SNMP重启POE端口供电
  18. js中一种常见条件判断if(var)的坑
  19. 计算机 继续教育培训心得体会,继续教育学习心得体会范文(精选5篇)
  20. 【论文阅读】TRO 2021: Fail-Safe Motion Planning for Online Verification of Autonomous Vehicles Using Conve

热门文章

  1. 分享几个益智题......看你能做对吗?
  2. 利用栈实现递归函数的非递归计算
  3. AtomicInteger 的使用
  4. 诗与远方:无题(五十七)
  5. 安卓之实现一个简单的电话拨号功能
  6. C# DataGridView属性设置
  7. String类常用方法记录
  8. java环境配置 Windows10
  9. html5邀请函在线制作,很炫的html5年会邀请函
  10. 南京软件测试自学英语,南京软件测试门槛高吗?南京软件测试学哪些