Nacos 作为配置中心 & 读取Yaml配置信息
通过本系列的前篇文章:
- /nacos-config-properties.html
在之前文章中我们学习到了
SpringCloud Alibaba
读取Nacos Config
内定义的properties
类型的配置文件信息,并且使用Nacos Console
进行修改配置信息后可以在应用程序内实时更新。
本章目标
Nacos Config
所支持的配置文件类型既然有多种,那我们该怎么配置才能读取不同的配置类型的内容呢?
快速入门
我们还是先来通过Nacos Console
来添加本章所使用的配置信息,要注意配置的后缀名改为yaml
。
Nacos Server
需要在本地安装Nacos Server
才能完成本章的内容讲解,具体的安装步骤访问Nacos 官方文档
创建配置
配置信息如下所示:
创建应用
我们在Nacos Console
已经添加了本章所使用的Yaml
类型的配置信息,下面通过Idea
开发工具创建一个SpringBoot
项目,并添加SpringCloud Alibaba
、SpringCloud
版本的依赖,pom.xml
配置文件内容如下所示:
1 | //... |
配置文件扩展名
在之前讲到过默认的配置文件扩展名为properties
,既然我们本章是读取的yaml
类型的文件,那肯定需要修改这个配置参数,application.yml
配置文件如下所示:
1 | spring: |
通过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
注解来获取配置信息,如下所示:
1 |
|
解释:
${hengboy.name:}
表示需要从全局的配置内容中读取hengboy.name
的配置信息,如果没有找到则使用冒号(:)
后的内容,当然这里我们没有添加任何的默认值,如果没有配置则为空字符串
。
第三步:通过@RefreshScope注解实时刷新配置信息
我们在ConfigController
控制器上添加了注解@RefreshScope
主要目的是来实时同步通过Nacos Console
修改的配置内容。
@RefreshScope
注解是SpringCloud
内部提供,用于配置热加载
。
第四步:运行测试
启动应用程序,我们通过curl http://localhost:8080/config/get
可以获取我们在Nacos Console
添加的配置内容:admin:25
第五步:实时更新测试
通过Nacos Console
我们修改下两个参数的内容并且重新发布配置信息
:
1 | hengboy.name : admin -> admin-change-after |
再次通过curl http://localhost:8080/config/get
命令访问,我们已经可以得到更新后的配置内容:admin-change-after:30
Nacos 作为配置中心 & 读取Yaml配置信息