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

2023-05-16

文章目录

    • 🐍第一步,创建配置文件到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为分布式系统中的外部化配置提供了可靠的解决方案,同时也提供了很多的高级用法,用户可以根据需要自由使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Spring Cloud Alibaba】Nacos config的使用和高阶用法 的相关文章

随机推荐

  • 三极管打造树莓派温控风扇

    为了防止树莓派长时间开机运转温度过高导致触发过热关机 xff0c 很多人都给装了散热风扇 xff0c 但某宝买的风扇插上之后是随着开机一直运转的 xff0c 不能随温度变化而自动开闭 xff0c 很多时候做无用功浪费电且产生噪音 本文将以一
  • PostgreSQL 辟谣存在任意代码执行漏洞:消息不实

    开发四年只会写业务代码 xff0c 分布式高并发都不会还做程序员 xff1f gt gt gt 近期在互联网媒体上流传 PostgreSQL 存在任意代码执行的漏洞 xff1a 拥有 pg read server files 权限的攻击者可
  • vue slot撸一撸

    为什么80 的码农都做不了架构师 xff1f gt gt gt vue使用过程中接触到slot xff0c 一番操作下有以下记录 xff1a 单个 xff1a 父组件引用子组件的时候 xff0c 写在子组件中的内容插入到了子组件中的slot
  • Nmap扫描结果的保存和输出

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 选项解释 oN标准保存 oXXML保存 oGGrep保存 oA保存到所有格式 append output补充保存文件 选项 oG 将结果Grep保存 nmap F oG t
  • SQL岗位30个面试题,SQL面试问题及答案

    SQL岗位30个面试题 xff0c SQL面试问题及答案 xff1a 什么是SQL xff1f SQL xff08 结构化查询语言 xff09 是一种设计用于检索和操作数据的数据库 它属于美国国家标准协会 xff08 ANSI xff09
  • nginx搭建点播视频(Mp4播放)

    首先 xff0c 环境中必然要有gcc c 43 43 环境 yum y install gcc c 43 43 1 使用openresty 这里使用的是1 11 2 1版本的openresty和1 0 2版本的openssl root 6
  • ajax提交 的编码小结

    今天用ajax的post方法提交数据给webservice 由于有email的缘故发现 注册方法调用总是报错 打开报文一看提交的 发现 64 符号被变成了 40 abc 64 126 com 即abc 40126 com 开始我还以为他没有
  • [JavaScript]Cookie详解(转)

    cookie概述 假如利用一个不变的框架来存储购物栏数据 xff0c 而商品显示页面是不断变化的 xff0c 尽管这样能达到一个模拟全局变量的功能 xff0c 但并不严谨 例如在导航框架页面内右击 xff0c 单击快捷菜单中的 刷新 命令
  • 面试组合技-月色血风暴,什么是Spring中的循环依赖?怎么解决循环依赖?

    x1f484 x1f484 x1f484 今年的铜三铁四到了 xff0c 给大家写几篇面试题解析 文章目录 x1f460 什么是Spring中的循环依赖 xff1f x1f462 Spring怎么解决循环依赖 xff1f x1f455 流程
  • matlab练习程序(矩阵生成有向网络图)

    早知道有向图和无向图差别没有想象中的大我就写到一起了 函数中使用的arrow画箭头函数是在这个网站下的 函数名netplot 使用方法输入请help netplot 无返回值 函数只能处理有向图 作者 xff1a tiandsp 最后修改
  • 字符串处理memchr和memrchr

    memchr extern void memchr const void buf int ch size t count 功能 xff1a 从buf所指内存区域的前count个字节查找字符ch 说明 xff1a 当第一次遇到字符ch时停止查
  • 计算多轴飞行器最大悬停时间

    以结果为导向 xff1a 先看下面截图 为了方便看清楚 xff0c 下面截图承接上面截图的 悬停时间公式 xff1a 电池容量 每个电机总电流之和 61 悬停时间 以上面第一个为例 电池容量为22000maH 每个电机总电流之和是什么意思呢
  • linux应用之make命令详解

    从源代码安装过软件的朋友一定对 configure amp amp make amp amp make install 安装三步曲非常熟悉了 然而究竟这个过程中的每一步幕后都发生了些什么呢 xff1f 今天小编将带你一探究竟 深入理解这个过
  • github 之 下载历史版本

    1 打开github中要下载的项目 2 点击commits 点击上图中标记的地方 xff0c 进入下图所示 xff1a 3 选择列表中的某个版本 4 Browse Files 5 下载 点击上图中的 Download ZIP 下载 转载于
  • Linux环境C程序设计(第2版)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Linux 环境 C 程序设计 xff08 第 2 版 xff09 共分 6 篇 第 1 篇 介绍了 Linux 系统的安装及 LinuxC 开发环境的搭建等 xff1b
  • 如何准备校招技术面试

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 如何准备校招技术面试 标签 xff1a 面试 TOC 2017 年互联网校招已近尾声 xff0c 作为一个非 CS 专业的应届生 xff0c 零 ACM 经验 零期刊论文发
  • vscode添加prettier格式化自动加分号问题

    在vscode的settings json中添加 xff1a 34 prettier singleQuote 34 true 34 prettier semi 34 false 不管别人有没有用 xff0c lz没用 切实有效 xff1a
  • 一个蚂蚁前端曾经的辛酸面试历程 | 掘金技术征文

    正好处在秋招 xff0c 我也来分享我自学校到现在的一些面试经历 本文就不分享具体的面试题了 xff0c 主要讲我这几年的面试经历 xff0c 以及我个人觉得可以从中吸取的经验教训 xff0c 希望能给在上大学以及毕业3年以内的同学提供一点
  • Nodejs 使用log4js日志

    一 创建log4 js文件 xff0c 保存日志到log文件 xff0c 并在控制台输出 xff0c 如果不控制台输出 xff0c 把删除红色的代码 const log4js 61 require 39 log4js 39 path 61
  • 【Spring Cloud Alibaba】Nacos config的使用和高阶用法

    文章目录 x1f40d 第一步 xff0c 创建配置文件到nacos中 x1f40d 第二步 xff0c 在项目中配置nacos的地址和指定文件 x1f40d 第三步 xff0c 读取配置文件 x1f426 高阶用法 x1f426 高阶用法