SpringCloud|SpringCloud Alibaba - Nacos 作为配置中心 & 读取Yaml配置信息
通过本系列的前篇文章:
- 《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 Alibaba
、SpringCloud
版本的依赖,pom.xml
配置文件内容如下所示://...1.8
Greenwich.RELEASE
0.2.1.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
pom
import
//...
配置文件扩展名 【SpringCloud|SpringCloud Alibaba - Nacos 作为配置中心 & 读取Yaml配置信息】在之前讲到过默认的配置文件扩展名为
properties
,既然我们本章是读取的yaml
类型的文件,那肯定需要修改这个配置参数,application.yml
配置文件如下所示:spring:
application:
name: hengboy-spring-cloud
# nacos config
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
# 配置文件后缀名为yaml
file-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 = "https://www.it610.com/config")
@RefreshScope
public class ConfigController {
/**
* 读取hengboy.name配置信息
*/
@Value(value = "https://www.it610.com/article/${hengboy.name:}")
private String userName;
/**
* 读取hengboy.age配置信息
*/
@Value(value = "https://www.it610.com/article/${hengboy.age:}")
private String userAge;
/**
* 获取配置内容
*
* @return
*/
@RequestMapping(value = "https://www.it610.com/get")
public String getConfig() {
return userName + ":" + userAge;
}}
解释:第三步:通过@RefreshScope注解实时刷新配置信息${hengboy.name:}
表示需要从全局的配置内容中读取hengboy.name
的配置信息,如果没有找到则使用冒号(:)
后的内容,当然这里我们没有添加任何的默认值,如果没有配置则为空字符串
。
我们在
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官方文档
- SpringCloud 核心技术
- Nacos 核心技术
- SpringBoot 核心技术
推荐阅读
- 【SpringCloud-Alibaba系列教程】8.一文学会使用sentinel
- Spring|Spring Cloud Alibaba之负载均衡组件 - Ribbon
- 史上最简单的SpringCloud教程|史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心(Finchley版本)
- Java架构师必备(Springcloud微服务+Docker+Springboot+分布式架构+Nginx+SSM+MySQL)
- 2019-10-31|2019-10-31 spring Cloud 无法注册到nacos问题
- 【SpringCloud-Alibaba系列教程】5.负载均衡
- 【SpringCloud-Alibaba系列教程】4.服务管理
- 关于nacos2连不上的一个原因
- SpringCloud之WebSocket配置的最佳方式
- 微服务框架