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>
//...
AI 代码解读

配置文件扩展名

在之前讲到过默认的配置文件扩展名为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
AI 代码解读

通过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;
    }

}
AI 代码解读

解释:${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
AI 代码解读

再次通过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/#/)
AI 代码解读

下面的内容你感兴趣吗?

目录
打赏
0
1
1
1
5
分享
相关文章
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
485 81
高效搭建Nacos:实现微服务的服务注册与配置中心
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
319 18
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
520 15
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
71 5
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
116 1
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
150 1
|
4月前
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法
Serverless 应用引擎使用问题之s.yaml文件中如何使用外部环境变量
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等