SpringCloud Alibaba - Nacos 作为配置中心 & 读取Yaml配置信息

简介: 通过本系列的前篇文章:《SpringCloud Alibaba - Nacos 作为配置中心 & 读取Properties配置信息》在之前文章中我们学习到了SpringCloud Alibaba读取Nacos Config内定义的properties类型的配置文件信息,并且使用Nacos Console进行修改配置信息后可以在应用程序内实时更新。

通过本系列的前篇文章:

在之前文章中我们学习到了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 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 = "/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目录下。

开源信息

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

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


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

下面的内容你感兴趣吗?

相关文章
|
2天前
|
Java API Nacos
第十二章 Spring Cloud Alibaba Sentinel
第十二章 Spring Cloud Alibaba Sentinel
12 0
|
2天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
9天前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
26 2
|
18天前
|
SpringCloudAlibaba 监控 Java
SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)
SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)
|
18天前
|
SpringCloudAlibaba Java API
SpringCloud Alibaba微服务工程搭建(保姆级)
SpringCloud Alibaba微服务工程搭建(保姆级)
|
18天前
|
SpringCloudAlibaba Java Nacos
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
|
1月前
|
编解码 Java Nacos
nacos常见问题之密码加密配置如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
141 0
|
1月前
|
安全 前端开发 Nacos
nacos常见问题之配置注册的白名单如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
96 0
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
52 0
|
1月前
|
Java Nacos Sentinel
Spring Cloud Alibaba 面试题及答案整理,最新面试题
Spring Cloud Alibaba 面试题及答案整理,最新面试题
208 0

热门文章

最新文章