Alibaba Nacos配置中心功能介绍与不同命名空间、分组等配置
概述:我们前面介绍过 Nacos 可以为我们提供服务注册与发现,以及实现了配置中心功能,本章将介绍nacos 配置中心的使用方法,以及其不同场景下的配置方式。在前面我们介绍过nacos的领域模型(下图),知道一个微服务工程读取的配置由 命名空间及分组和其dataId 进行唯一确定。
|
环境:SpringBoot 2.2.2.RELEASE + SpringCloud Hoxton.SR1 + SpringCloud Alibaba 2.1.0.RELEASE
一、项目基础配置搭建
主要步骤:
- 创建工程,引入依赖
- 创建两个配置文件
- 创建主启动类
- 创建业务类读取配置
- 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配置中心功能介绍与不同命名空间、分组等配置相关推荐
- Apollo架构体系、Apollo运行原理、Apollo配置中心简单介绍(一)
笔者在工作中遇到如下问题,随着程序功能越多,配置文件不断增加,一些功能的开关.服务器地址.接口地址.不同环境的一些配置文件不同,这些在每次发布不同环境.更新项目时都比较繁琐,后来学习微服务时接触到了S ...
- SpringCloud微服务应用-config配置中心(介绍、搭建、动态刷新、测试)
文章目录 前言 一.传统应用配置痛点 二.Config 配置中心介绍 三.服务端Config Server搭建 1.pom依赖 2.application启动类配置 3.application.yml ...
- Spring Cloud Alibaba - 19 Nacos Config配置中心加载不同微服务的通用配置的两种方式
文章目录 Pre 实现 方式一 通过 shared-dataids 方式 方式二 通过 ext-config方式 配置文件优先级 源码 Pre Spring Cloud Alibaba - 18 Na ...
- Spring Cloud 系列之 Alibaba Nacos 注册中心(一)
前言 从本章节开始,我们学习 Spring Cloud Alibaba 相关微服务组件. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发 ...
- Spring cloud Alibaba Nacos注册中心(2) NacosNamingService
NacosNamingService 文章目录 NacosNamingService 1.NamingProxy 2.BeatReactor 3.HostReactor 3.1 初始化 3.2 Fai ...
- 会声会影2023旗舰版中文版永久功能介绍,会声会影版本系统要求配置及使用技巧
会声会影2023旗舰版是一款广受欢迎的视频编辑软件,它的最新版本,会声会影2023,已经发布.在这篇文章中,我们将探讨会声会影2023的新功能以及它对视频制作人员的影响. 会声会影20233旗舰版带来 ...
- SpringCloud学习(十八):Config分布式配置中心的介绍与搭建
目录 一.概述 1.分布式系统面临的配置问题 2. Config配置中心是什么 3.Spring Config能做什么 二.Config总控中心配置与测试 1.在Gitee上新建仓库 2.本地硬盘目录 ...
- 统一配置中心对比介绍
一.Apollo和Spring Cloud Config配置中心对比 二.apollo相比于spring-cloud-config有什么优势 https://github.com/ctripcorp/ ...
- Java行之有效的学习方法,Java直播课:Spring Cloud Alibaba Nacos 注册中心
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...
最新文章
- 《JAVA与模式》之抽象工厂模式
- short s1 = 1; s1 = s1 + 1; 有错吗?short s1 = 1; s1 += 1 有错吗
- python--微信小程序获取手机号码报错
- java解析c的结构体_解析C语言中结构体struct的对齐问题
- 基于深度学习的番茄叶部病害识别模型
- 计算机图形设计案例,9《计算机图形图像的设计的案例实训题.doc
- springboot集成log4j
- gps导航卫星星历及历书参数意义
- java 本地文件上传到服务器,java本地文件上传到远程服务器
- DOS计算机设置登录密码,bios开机密码怎么设置或取消?bios开机密码操作介绍
- jeecms oracle v5_jeecms 基本架构研究
- Libero Soc v11.9的安装以及证书的获取(2021新版)
- Excel VBA将所有Sheet重命名为单元格a1的名称
- html超酷图片墙特效代码,超酷超绚精美图片展示效果代码(一)
- 缺失数据填补基础方法(2)——Random Forest (MissForest)填补
- python属于面向对象的还是面向过程的呀-python中的面向对象和面向过程
- 通过SNMP重启POE端口供电
- js中一种常见条件判断if(var)的坑
- 计算机 继续教育培训心得体会,继续教育学习心得体会范文(精选5篇)
- 【论文阅读】TRO 2021: Fail-Safe Motion Planning for Online Verification of Autonomous Vehicles Using Conve