【Spring Cloud Alibaba】Nacos config的使用和高阶用法

news2025/1/13 13:17:11

文章目录

    • 🐍第一步,创建配置文件到nacos中
    • 🐍第二步,在项目中配置nacos的地址和指定文件
    • 🐍第三步,读取配置文件
    • 🐦高阶用法
      • 🐦高阶用法一:使用yaml文件
        • 🐦第一步,nacos创建nacos-config.yml文件,配置如下![在这里插入图片描述](https://img-blog.csdnimg.cn/54cf5ccd2774401c96688b90fef0b9a5.png)
        • 🐦第二步,修改项目配置文件如下
        • 🐦第三步,读取
      • 🐼高阶用法二:使用业务类读取配置
      • 🐘高阶用法三:动态刷新配置
      • 🐑高阶用法四:使用相同的配置文件
        • 🐑第一步:替换jar包
        • 🐑第二步:nacos创建common.yml文件
        • 🐑第三步,项目配置文件配置
        • 🐑第四步,启动类读取配置
      • 🐫高阶用法五: 自定义命名空间(namespace)
        • 🐫第一步,创建test命名空间
        • 🐫第二步,命名空间里面新建配置文件
        • 🐫第三步,项目配置命名空间
      • 🐎高阶用法六:灵活配置环境
        • 🐎第一步,nacos隔离环境
        • 🐎第二步,pom文件配置环境
        • 🐎第三步,修改yml文件
        • 🐎第四步,修改pom文件使其支持`@`符号

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。
引用:
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

文中对应的代码可查看
https://gitee.com/WangFuGui-Ma/spring-cloud-alibaba/tree/master/nacos/config

🐍第一步,创建配置文件到nacos中

在nacos的配置管理页面创建如下图所示的配置

在这里插入图片描述

🐍第二步,在项目中配置nacos的地址和指定文件

必须使用 bootstrap.properties 配置文件来配置Nacos Server 地址

spring.application.name 和 nacos中的dataid相对应

在这里插入图片描述

spring.cloud.nacos.config.server-addr填写自己本机的nacos地址

在这里插入图片描述

🐍第三步,读取配置文件

@SpringBootApplication
public class NacosConfigApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
        String useLocalCache = applicationContext.getEnvironment().getProperty("useLocalCache");
        System.err.println("useLocalCache :"+useLocalCache);
    }
}

在我们的springboot启动内中读取我们的配置文件

在这里插入图片描述

启动,就可以读取到了

在这里插入图片描述

🐦高阶用法

🐦高阶用法一:使用yaml文件

🐦第一步,nacos创建nacos-config.yml文件,配置如下在这里插入图片描述

🐦第二步,修改项目配置文件如下

在这里插入图片描述
bootstrap.yml

spring:
  application:
    name: nacos-config # appName 会自动读取nacos中dataid为nacos-config.yml的文件
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml

file-extension:文件名的后缀

🐦第三步,读取

在这里插入图片描述

🐼高阶用法二:使用业务类读取配置

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    /**
     * http://localhost:8080/config/get
     */
    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}

在这里插入图片描述
postman测试

在这里插入图片描述

🐘高阶用法三:动态刷新配置

修改nacos配置

在这里插入图片描述

启动类修改为

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

import java.util.concurrent.TimeUnit;

/**
 * Document: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
 */
@SpringBootApplication
public class NacosConfigApplication {

    public static void main(String[] args) throws InterruptedException {

        ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
        while(true) {
            String useLocalCache = applicationContext.getEnvironment().getProperty("useLocalCache");
            System.err.println("useLocalCache :" + useLocalCache);
            TimeUnit.SECONDS.sleep(1);
        }
    }
}

修改之后成功获取

在这里插入图片描述

业务类上面可以加注解@RefreshScope开启刷新配置

在这里插入图片描述

在这里插入图片描述

🐑高阶用法四:使用相同的配置文件

使用情况:很多系统共用一个配置文件

🐑第一步:替换jar包

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>0.2.1.RELEASE</version>
        </dependency>

替换为

 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>

在这里插入图片描述

🐑第二步:nacos创建common.yml文件

在这里插入图片描述

🐑第三步,项目配置文件配置

spring:
  application:
    name: nacos-config # appName 会自动读取nacos中dataid为nacos-config.yml的文件
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml #文件后缀名
        shared-configs:
          - common.${spring.cloud.nacos.config.file-extension}

shared-configs:共用的文件

🐑第四步,启动类读取配置

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

import java.util.concurrent.TimeUnit;

/**
 * Document: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
 */
@SpringBootApplication
public class NacosConfigApplication {

    public static void main(String[] args) throws InterruptedException {

        ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
        while(true) {
            String useLocalCache = applicationContext.getEnvironment().getProperty("useLocalCache");
            String common = applicationContext.getEnvironment().getProperty("common");
            System.err.println("useLocalCache :" + useLocalCache);
            System.err.println("common :" + common);
            TimeUnit.SECONDS.sleep(1);
        }
    }
}

在这里插入图片描述

🐫高阶用法五: 自定义命名空间(namespace)

nacos默认读取的是public

在这里插入图片描述
我们要用到test环境

🐫第一步,创建test命名空间

在这里插入图片描述

复制命名空间id 4c9c23a2-0300-4c72-b07f-7846bd03e153

在这里插入图片描述

🐫第二步,命名空间里面新建配置文件

在这里插入图片描述
在这里插入图片描述

🐫第三步,项目配置命名空间

spring:
  application:
    name: nacos-config # appName 会自动读取nacos中dataid为nacos-config.yml的文件
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml #文件后缀名
        shared-configs:
          - common.${spring.cloud.nacos.config.file-extension}
        namespace: 4c9c23a2-0300-4c72-b07f-7846bd03e153

namespace: 命名空间id

这样读到的就是test空间下的配置了

在这里插入图片描述

🐎高阶用法六:灵活配置环境

🐎第一步,nacos隔离环境

在这里插入图片描述

🐎第二步,pom文件配置环境

在这里插入图片描述

  <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <profileActive>dev</profileActive>
                <serverAddr>127.0.0.1:8848</serverAddr>
                <namespace>563742f8-6f8b-4b97-8a1f-2f6cf6beb5fa</namespace>
            </properties>
            <activation>
                <!-- 默认环境 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profileActive>test</profileActive>
                <serverAddr>127.0.0.1:8848</serverAddr>
                <namespace>4c9c23a2-0300-4c72-b07f-7846bd03e153</namespace>
            </properties>
        </profile>
    </profiles>

配置好了要刷新maven

好了之后会有两个配置文件选项

在这里插入图片描述

🐎第三步,修改yml文件

spring:
  profiles:
    active: @profileActive@
  application:
    name: nacos-config # appName 会自动读取nacos中dataid为nacos-config.yml的文件
  cloud:
    nacos:
      config:
        server-addr: @serverAddr@
        file-extension: yml #文件后缀名
        shared-configs:
          - common.${spring.cloud.nacos.config.file-extension}
        namespace: @namespace@

但是这个时候启动不了的,因为原生的yml不支持@符号

🐎第四步,修改pom文件使其支持@符号

在这里插入图片描述

 <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
        </dependency>
  <build>
        <!--build节点增加内容-->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!--开启过滤,用指定的参数替换directory下的文件中的参数-->
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

配置好了之后就可以启动

切换环境在maven右侧切换即可

在这里插入图片描述

总的来说,Spring Cloud Alibaba Nacos Config是一种用于管理分布式系统配置的工具,它提供了服务器端和客户端的支持,允许用户在Nacos服务器上集中管理Spring Cloud应用程序的外部配置。Spring Cloud Alibaba Nacos Config提供了Config Server和Client的替代方案,客户端和服务器上的概念与Spring Environment和PropertySource有着一致的抽象,在特殊的bootstrap阶段,配置被加载到Spring环境中。在应用程序从开发到测试再到生产的不同环境中,用户可以通过Nacos集中管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。

使用Spring Cloud Alibaba Nacos Config的主要步骤包括:

  • 在Nacos配置管理页面上创建配置文件。

  • 在项目中配置Nacos地址和指定文件,这必须使用bootstrap.properties配置文件来配置Nacos Server地址。

  • 在应用程序启动时读取配置文件。在SpringBoot启动内中读取配置文件,可以使用SpringApplication类的run()方法,然后在ConfigurableApplicationContext上调用getEnvironment().getProperty()方法读取配置属性。

在高阶用法方面,可以使用YAML文件和业务类读取配置。使用YAML文件时,需要在Nacos服务器上创建nacos-config.yml文件,并将配置文件后缀设置为yml。然后,可以使用bootstrap.yml配置文件来指定Nacos服务器地址和文件扩展名。在使用业务类读取配置时,需要使用@Value注解将属性注入到控制器中,并使用@RefreshScope注解使该控制器成为可刷新的bean。这使得在应用程序运行时,可以通过HTTP接口刷新该控制器并重新读取配置。

综上所述,Spring Cloud Alibaba Nacos Config为分布式系统中的外部化配置提供了可靠的解决方案,同时也提供了很多的高级用法,用户可以根据需要自由使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5年功能测试,薪资定格8K迷茫了....我该如何破局?

前言 来自一位粉丝的投稿&#xff0c;从毕业开始就一直在从事软件测试的工作&#xff0c;到目前已经是第5个年头了&#xff0c;从4k涨到了8K&#xff0c;显而易见我们这位粉丝并不满足现状&#xff0c;于是问我怎么破局&#xff0c;他当下应该干什么事情,或者应该学习什么技术…

从零开始学习Linux运维,成为IT领域翘楚(十)

文章目录 &#x1f525;Linux网络防火墙&#x1f525;Linux内核机制 &#x1f525;Linux网络防火墙 防火墙管理工具 firewalld概述 Centos 系统中集成了多款防火墙管理工具&#xff0c;其中 firewalld服务是默认的防火墙配置管理工具&#xff0c;它拥有基于 CLI&#xff08;…

Aha! Adaptive History-driven Attack for Decision-based Black-box Models

AHA!基于决策的黑盒模型的自适应历史驱动攻击 Aha! Adaptive History-driven Attack for Decision-based Black-box Models ABSTRACT 基于决策的黑盒攻击指的是只使用受害者模型的前1个标签来制作对抗示例。一种常见的做法是从一个大的扰动开始&#xff0c;然后用一个确定的方…

【Nacos源码分析】

Nacos源码分析 Nacos源码分析1.下载Nacos源码并运行1.1.下载Nacos源码1.2.导入Demo工程1.3.导入Nacos源码1.4.proto编译1.4.1.什么是protobuf1.4.2.安装protoc1.4.3.编译proto 1.5.运行 2.服务注册2.1.服务注册接口2.2.客户端2.2.1.NacosServiceRegistryAutoConfiguration2.2.2…

【软件测试】| 软件测试 - 答疑篇

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️ 专栏&#xff1a;软件测试 &#x1f397;️ 如何优雅的活着&#xff0c;是我找寻的方向 目录 一、什么是软件测试二、测试和调试的区别三、软件测试和开发的区别 一、什么是软件测试 最常见的理解是&#xff1a;软…

使用J-Link的J-Scope功能查看数据实时波形

使用串口打印波形的不便之处 对于要查看的实时变量&#xff0c;一般可以用串口打印到可以查看波形的上位机上。但是这种办法有几个不方便的地方&#xff1a; 需要根据配套上位机的通讯协议&#xff0c;在单片机上编写上传数据的代码 单片机CPU需要浪费部分时间在串口数据上传上…

Makefile基础教程(变量的介绍和使用)

文章目录 前言一、Makefile变量概念介绍二、Makefile中变量的赋值方式1.简单赋值2.递归赋值3.条件赋值4.追加赋值 三、Makefile赋值在工程中的应用总结 前言 在C语言等语言中存在变量这个概念那么在Makefile中也是存在变量这个概念的&#xff0c;现在就让我们来学习一下什么是…

Solr(5):Solr控制台说明-主面板

1 Dashboard(仪表盘) 访问 http://ip:8983/solr时&#xff0c;出现该主页面&#xff0c;可查看到solr运行时间、solr版本&#xff0c;系统内存、虚拟机内存的使用情况 这里的图片描述 2 Logging(日志) 显示solr运行出现的异常或错误 3 Core Admin (core管理) 主要有Add Cor…

Java--io流知识总结

什么是输入/输出流 Java 程序通过流来完成输入/输出&#xff0c;所有的输入/输出以流的形式处理。因此要了解 I/O 系统&#xff0c;首先要理解输入/输出流的概念。 输入就是将数据从各种输入设备&#xff08;包括文件、键盘等&#xff09;中读取到内存中&#xff0c;输出则正好…

抢先微软,Google版Copilot上线!谷歌宣布给Google全家桶开放Bard功能

夕小瑶科技说 原创作者 | 智商掉了一地、兔子酱 就在本月 5 号&#xff0c;Bard 和 Google Workspace 同步更新了一则新闻&#xff0c;宣布 Workspace 的团队用户即日起可以申请体验由 Bard 大模型驱动的生成式 AI 工具。 这项计划在今年 3 月份首次公布&#xff0c;当时该工具…

上架Google play 提示 不符合64位版本应用的要求

此版本不符合 Google Play 关于提供 64 位版本应用的要求以下 APK 或 App Bundle 面向 64 位设备&#xff0c;但只有 32 位原生代码:[29]请向应用中添加64位和 32 位原生代码。使用 Android App Bundle 发布格式可自动确保每种设备架构仅收到所需加应用的总大小。 在build.gra…

HCIA-RS实验-路由配置-RIPv2 路由汇总和认证

RIPv2 路由汇总和认证简介&#xff1a; RIPv2 是一个距离向量路由协议&#xff0c;用于在网络中选择最佳路径。RIPv2 路由汇总和认证是两个重要的功能&#xff0c;可以提高路由协议的可靠性和安全性。 1. 路由汇总 路由汇总是将多个路由表项合并成一个较小的路由表项的过程。在…

vscode IDE 能用的上的扩展工具功能介绍

记录分享vscode扩展&#xff0c;包括提升开发效率。必备。主题美化。ChatGPT等。 参考 vscode-extensions [Best] 记录分享方式&#xff0c;整理自己用的扩展&#xff0c;还有一键备份和还原方法。 ⭐快速下载和使用扩展 后面会介绍很多vscode扩展.这裡有一个技巧&#xff0c;…

腾讯云2核2G4M轻量服务器带宽CPU流量系统盘性能测评

腾讯云轻量2核2G4M服务器自带4M公网带宽&#xff0c;下载速度可达512KB/秒&#xff0c;100%CPU性能&#xff0c;系统盘为50GB SSD盘&#xff0c;300GB月流量&#xff0c;折合每天10G流量&#xff0c;地域节点可选上海/广州/北京。腾讯云百科分享腾讯云轻量应用服务器2核2G4M配置…

【1++的Linux】之Linux常见指令(一)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;ls指令二&#xff0c;pwd命令三&#xff0c;cd指令四&#xff0c;touch 指令五&#xff0c;mkdir指令六&#xff0c;rmdir指令 && rm 指令 一&#…

sensor的感光原理

文章内容来自网络&#xff0c;联系我可以删掉。 目录 CMOS sensor上有什么&#xff1f; 不同像素对应的图像质量&#xff1a; 像点感光原理&#xff1a; Bayer格式变换成RGB格式&#xff1a; CMOS sensor上有什么&#xff1f; CMOS sensor 通常由像敏单元阵列、行驱动器、…

mosn基于延迟负载均衡算法——走得更快,期待走得更稳 | 京东云技术团队

前言 这篇文章主要是介绍mosn在v1.5.0中新引入的基于延迟的负载均衡算法。 对分布式系统中延迟出现的原因进行剖析介绍mosn都通过哪些方法来降低延迟构建来与生产环境性能分布相近的测试用例来对算法进行验证 地址&#xff1a; https://github.com/mosn/mosn/pull/2253 在开…

python安装包遇到问题解决手册

问题描述&#xff1a; Windows安装 pip install pycocotools 出现问题。显示 error: Microsoft Visual C 14.0 or greater is required. Get it with "Microsoft C Build Tools": https://visualstudiomicrosoft.com/visual-cpp-build-tools/ 解决方法&#xff1a;…

力扣算题day16(树使用递归方法需要记住,都会遍历完整个树,叶子节点是整个递归的某次递归结束)

104、二叉树最大深度 给定一个二叉树&#xff0c;找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 测试代码&#xff1a; class TreeNode:def __init__(self, valNone, leftNone, rightNone):self.val valself.left leftself.right rightclass …

【Linux】缓存数据库Memcached

一、 什么是缓存 缓存是指可以进行高速数据交换的存储器&#xff0c;它先于内存与CPU交换数据&#xff0c;因此速率很快。 从性能分析&#xff1a; CPU缓存>内存>磁盘>数据库 从性能来看内存是介于CPU和磁盘&#xff0c;在实际中内存是CPU和磁盘的桥梁。buffer和cache…