通过本系列的前篇文章:

  • 《SpringCloud Alibaba - Nacos 作为配置中心 & 读取Properties配置信息》

在之前文章中我们学习到了SpringCloud Alibaba读取Nacos Config内定义的properties类型的配置文件信息,并且使用Nacos Console进行修改配置信息后可以在应用程序内实时更新。

本章目标

Nacos Config所支持的配置文件类型既然有多种,那我们该怎么配置才能读取不同的配置类型的内容呢?

快速入门

我们还是先来通过Nacos Console来添加本章所使用的配置信息,要注意配置的后缀名改为yaml

Nacos Server

需要在本地安装Nacos Server才能完成本章的内容讲解,具体的安装步骤访问Nacos 官方文档

创建配置

配置信息如下所示:

创建应用

我们在Nacos Console已经添加了本章所使用的Yaml类型的配置信息,下面通过Idea开发工具创建一个SpringBoot项目,并添加SpringCloud AlibabaSpringCloud版本的依赖,pom.xml配置文件内容如下所示:

//...
<properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.RELEASE</spring-cloud.version><spring-cloud-alibaba.version>0.2.1.RELEASE</spring-cloud-alibaba.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--alibaba nacos config--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency></dependencies><dependencyManagement><dependencies><!--SpringCloud--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!--SpringCloud Alibaba--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
//...

配置文件扩展名

在之前讲到过默认的配置文件扩展名为properties,既然我们本章是读取的yaml类型的文件,那肯定需要修改这个配置参数,application.yml配置文件如下所示:

spring:application:name: hengboy-spring-cloud# nacos configcloud:nacos:config:server-addr: 127.0.0.1:8848# 配置文件后缀名为yamlfile-extension: yaml

通过spring.cloud.nacos.config.file-extension参数进行修改默认的Nacos Config所匹配的默认文件扩展名。

在上面的配置文件内要注意的时,hengboy-spring-cloud要与Nacos Console内添加的配置data-id前部分匹配,也就是匹配:hengboy-spring-cloud.yaml

读取配置

下面我们通过简单的几个步骤来读取我们配置的yaml配置内容。

第一步:创建一个配置读取的Controller

创建一个名为ConfigController的配置查询控制器,并且类上配置@RequestMapping("/config")

第二步:通过@Value注解读取配置信息

我们在之前章节通过applicationContext#getEnvironment#getProperty方法可以直接获取对应的Nacos Config的配置信息,当然SpringCloud Alibaba也同样支持通过@Value注解来获取配置信息,如下所示:

@RestController
@RequestMapping(value = "/config")
@RefreshScope
public class ConfigController {/*** 读取hengboy.name配置信息*/@Value(value = "${hengboy.name:}")private String userName;/*** 读取hengboy.age配置信息*/@Value(value = "${hengboy.age:}")private String userAge;/*** 获取配置内容** @return*/@RequestMapping(value = "/get")public String getConfig() {return userName + ":" + userAge;}}

解释:${hengboy.name:}表示需要从全局的配置内容中读取hengboy.name的配置信息,如果没有找到则使用 冒号(:) 后的内容,当然这里我们没有添加任何的默认值,如果没有配置则为空字符串

第三步:通过@RefreshScope注解实时刷新配置信息
我们在ConfigController控制器上添加了注解@RefreshScope主要目的是来实时同步通过Nacos Console修改的配置内容。

@RefreshScope注解是SpringCloud内部提供,用于配置热加载

第四步:运行测试

启动应用程序,我们通过curl http://localhost:8080/config/get可以获取我们在Nacos Console添加的配置内容:admin:25

第五步:实时更新测试

通过Nacos Console我们修改下两个参数的内容并且重新发布配置信息

hengboy.name : admin -> admin-change-after
hegnboy.age : 25 -> 30

再次通过curl http://localhost:8080/config/get命令访问,我们已经可以得到更新后的配置内容:admin-change-after:30

代码示例

本章代码在源码的名称为:spring-cloud-alibaba-nacos-config-yaml,在SpringCloud-Alibaba/Nacos-Config目录下。

  • Github:https://github.com/hengboy/spring-cloud-chapter
  • Gitee:https://gitee.com/hengboy/spring-cloud-chapter

开源信息

  • MicroJob
    micro-job是一款分布式任务调度执行框架,用于集群环境负载均衡条件下的任务分发以及任务消费

任务消费者节点定义任务 & 任务自动上报
任务调度器自动根据负载均衡策略来选择不同的消费者节点进行任务消费


[点击查看MicroJob官方文档](http://job.yuqiyu.com/#/)

下面的内容你感兴趣吗?

  • SpringCloud 核心技术
  • Nacos 核心技术
  • SpringBoot 核心技术

SpringCloud Alibaba - Nacos 作为配置中心 读取Yaml配置信息相关推荐

  1. SpringCloud Alibaba - Nacos 作为配置中心 读取Properties配置信息

    SpringCloud Alibaba是阿里巴巴致力于对微服务的管理.配置.注册等一整套的解决方案. 简介 Nacos 提供用于存储配置和其他元数据的 K-V 存储,为分布式系统中的外部化配置提供服务 ...

  2. .Net Core 自定义配置源从配置中心读取配置

    配置,几乎所有的应用程序都离不开它..Net Framework时代我们使用App.config.Web.config,到了.Net Core的时代我们使用appsettings.json,这些我们再 ...

  3. SpringCloud学习之(十八)SpringCloud Alibaba Nacos服务注册和配置中心

    文章目录 (十八)SpringCloud Alibaba Nacos服务注册和配置中心 1.Nacos简介 1.1 为什么叫Nacos 1.2 Nacos是什么 1.3 Nacos能干嘛 1.4 Na ...

  4. nacos当配置中心读取其他配置文件_SpringBoot+Nacos实现配置中心

    为什么需要配置中心 不知道你是否遇到过以下情况: 同一个项目有多套配置,分布在不同的配置文件中,需要修改时,要改多个文件,有时候会遗漏配置 某天突然需要修改线上的一个配置,只能修改.提交,重启服务 项 ...

  5. 客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心

    客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心(谷粒) 报错内容 ...

  6. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新

    一.SpringCloud Config 基本配置中的问题 在上一章节<SpringCloud config 配置中心介绍与基本配置使用>中我们现实了配置中心的配置集中管理.调用微服务应用 ...

  7. Apollo配置中心与本地配置优先级

    背景 在项目重构时,删除若干个application-{env}.yml文件,仅保留一个application.yml文件,该文件中保留的配置项都是几乎不会变更的配置,至于需要跟随不同环境而变更的配置 ...

  8. 分布式配置中心 Disconf 安装配置

    分布式配置中心 Disconf 安装配置 前提准备 CentOS 服务器一台 MySQL 数据库一台 安装依赖软件 安装 JDK 安装 Git 安装 Maven 安装 Zookeeeper 安装 To ...

  9. SpringCloud学习记录 | 第十五篇:SpringCloud Alibaba Nacos配置中心-单机版

    重要.重要.重要 官网资料:https://nacos.io/zh-cn/docs/what-is-nacos.html NacosConfigServer端 前面一篇文章意见说了怎么部署一个Naco ...

  10. SpringCloud Alibaba Nacos服务注册和配置中心-微服务(二十六)

    Nacos作为服务注册中心演示 官网文档 基于Nacos的服务提供者 新建Module cloudalibaba-provider-payment9001 POM 父POM <?xml vers ...

最新文章

  1. 最高奖金5万|带打目标检测大赛!还给匹配神助攻队友!
  2. 最详细的linux下的磁盘分区及格式化
  3. 第三十八期:用Git帮助写作者更好地完成工作
  4. 判断变量是空_Python 判断变量是否是 None 的三种写法
  5. 如何将一棵树转换成二叉树
  6. 使用awk进行文本处理
  7. atitit.提升性能AppCache
  8. matlab:图像的余弦变换(DCT)
  9. 图书管理 python excel_爬取python异步社区图书并写入excel
  10. 基于SSM【爱校图书馆管理系统】附源码+论文
  11. Cmake编译时无法打开包括文件: “pthread.h”
  12. lpddr3 阻抗_LPDDRx的总结
  13. 9种常见的HR数据分析方法
  14. paypal订阅流程及api请求
  15. 卖货文案二:建立消费者信任
  16. 23种设计模式学习记录之单例设计模式
  17. 神仙打架看不懂?用人话解读NIPS神经网络攻防赛清华三连冠团队模型算法
  18. centos查看磁盘转速_Centos磁盘读写检测进行性能判断
  19. Google Earth Engine(GEE)——清华全球不透水层数据中国区域逐年下载
  20. 官宣:浙江卫视携手有哇宇宙重磅推出《奔跑吧·共同富裕篇》专属数字藏品,致敬中国新农村建设成就!...

热门文章

  1. Extjs使用(最最基础)
  2. php.ini中设置session过期时间
  3. 看看你的密码有多安全?
  4. 微软软件开发技术二十年回顾(MFC篇)
  5. 【博客管理】他山之石简介【置顶】
  6. MATLAB随机数生成器
  7. ENVI学习总结(二)——基于自带定位信息的几何校正
  8. 关于socket的简单的客户服务端编程
  9. webStrom 开始你的第一个React应用
  10. 面试题:Java对象不再使用时,为什么要赋值为null?