SpringCloud使用Nacos保存和读取变量的配置方法

目录
  • 前提条件
  • 启动配置管理
  • 注入配置
  • 同步配置
    • 注意:

在使用SpringCloud开发微服务时,经常会遇到一些比较小的后台参数配置,这些配置不足以单独开一张表去存储,而且其他服务会读取该参数。比如IP白名单。这时,使用Nacos去保存和读取就比较方便。

前提条件

  • 使用SpringCloud的项目
  • 启动Nacos

启动配置管理

添加依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${latest.version}</version>
</dependency

注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

参考:Nacos版本说明Wiki

在微服务的配置中配置Nacos server的地址和应用名

spring:
  application:
    name: service-xxx
  cloud:
    nacos:
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yaml

说明:

之所以需要配置spring.application.name,是因为它是构成 Nacos 配置管理dataId字段的一部分。

在 Nacos Spring Cloud 中,dataId的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active即为当前环境对应的profile,详情可以参考Spring Boot文档

    注意:当spring.profiles.active为空时,对应的连接符-也将不存在,dataId的拼接格式变成${prefix}.${file-extension}
  • file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。目前只支持propertiesyaml类型。

注入配置

按照上面配置好Nacos作为配置中心后,就可以通过在配置类上增加SpringCloud原生注解,开启自动从Nacos取值,例如

  • @Value 直接注入变量值
  • @ConfigurationProperties 将若干变量整合到一个Properties类中

注意:

要启用自动同步Nacos变量的变化,需要在注入变量的类上增加@RefreshScope注解

Nacos也提供了与之对应的自己特有的注解。

Spring Cloud注解 Nacos Spring 注解 备注
@Value @NacosValue auto-refreshed
@ConfigurationProperties @NacosConfigurationProperties auto-refreshed, @NacosProperty 对某一个属性进行设置, @NacosIgnore Nacos忽略该值

一般来说,我们注入变量,都是把变量放在微服务的配置文件中,例如application.yaml,但是有时候,我们想单独把某些配置保存为一个nacos的配置,即:有独立的dataId,这时,我们需要用到extension-configs例如,有如下配置:

@Component
@RefreshScope
@ConfigurationProperties(prefix = "test")
public class TestProperties {
    private List<String> whiteList;

    public List<String> getWhiteList() {
        return whiteList;
    }

    public void setWhiteList(List<String> whiteList) {
        this.whiteList = whiteList;
    }

}

我们想在nacos上创建一个test.properties的配置存放该Properties的值,那么就需要修改微服务的配置文件:

spring:
  application:
    name: service-xxx
  cloud:
    nacos:
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yaml
        extension-configs[0]:
          data-id: test.properties
          refresh: true

extension-configs[n]可以增加多个,每一个包含三个配置:

  • data-id独立的data-id,必须以propertiesyaml结尾,不受spring.cloud.nacos.config.file-extension影响
  • group该配置独立的group
  • refresh是否启用自动刷新,默认false

这样,就实现了独立的配置文件的nacos配置和其值自动更新。

同步配置

在上面的基础上,我们再增加一个功能:微服务从本地修改变量值,并上传到nacos,其他相同微服务实例,取值时都会拿到相同值,那就需要调用nacos的原生APINacosConfigManager

//将本地配置推送到Nacos
configManager.getConfigService().publishConfig("test.properties", "DEFAULT_GROUP", contentToString(ConfigType.PROPERTIES));
//从Nacos拉取配置
configManager.getConfigService().getConfig("test.properties", "DEFAULT_GROUP", 100l)

注意:

1.假设当前微服务有两个实例: A和B,我们在A上,通过publishConfigTestProperties的值更新到了Nacos,那么另一个实例B,会收到Nacos的通知,从nacos获取到最新的值,但是,这中间会有一个毫秒级的延迟。

2.Nacos也提供了例如@NacosInjectConfigService等API,但是这些API只能在SpringBoot中使用,在SpringCloud中是无法直接使用的。

到此这篇关于SpringCloud使用Nacos保存和读取变量的文章就介绍到这了,更多相关SpringCloud使用Nacos保存和读取变量内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot项目改为SpringCloud项目使用nacos作为注册中心的方法

    本章讲解的是在不改变原有业务的情况下将springboot改为springcloud项目使用nacos作为注册中心 首先在官网下载好nacos注册中心,在bin目录中startup.cmd文件为启动命令默认端口号是8888 接下来修改原有项目依赖 在父依赖模块添加springcloud依赖版本,若没有父依赖直接在项目指定也一样 首先指定版本 <properties> <cloud.version>Hoxton.RELEASE</cloud.version> <al

  • SpringCloud集成Nacos的使用小结

    Nacos 注册中心 Nacos 是 Dubbo 生态系统中重要的注册中心实现,其中 dubbo-registry-nacos 则是 Dubbo 融合 Nacos 注册中心的实现. Nacos服务安装与启动 安装地址: https://github.com/alibaba/nacos/releases 本文在Windows环境测试,下载zip版,解压. 配置conf目录下的application.properties文件,配置nacos数据源,端口等. #*************** Spri

  • 使用springCloud+nacos集成seata1.3.0搭建过程

    1.docker安装seata 1.3.0镜像 docker pull seataio/seata-server:1.3.0 2.运行容器获取配置文件 docker run --name seata-server -p 8091:8091 -d seataio/seata-server:1.3.0 3.将容器中的配置拷贝到/usr/local/seata-1.3.0 docker cp seata-server:/seata-server /usr/local/seata-1.3.0 4.停止容

  • SpringCloud使用Nacos保存和读取变量的配置方法

    目录 前提条件 启动配置管理 注入配置 同步配置 注意: 在使用SpringCloud开发微服务时,经常会遇到一些比较小的后台参数配置,这些配置不足以单独开一张表去存储,而且其他服务会读取该参数.比如IP白名单.这时,使用Nacos去保存和读取就比较方便. 前提条件 使用SpringCloud的项目 启动Nacos 启动配置管理 添加依赖: <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId&

  • Android 环境变量的配置方法

    我们在创建AVD时,在命令行窗口中输入android list targets会提示:'android'不是内部或外部命令,如图1,其实这主要是由于没有配置好Android SDK环境变量引起的. 图-1 android不是内部或外部命令      解决的办法有两种:        (1)配置android sdk的环境变量:        (2)直接进入android sdk所在的目录执行(其实可以不配置环境变量而直接进入目录执行文件的).        方法一:配置android sdk环境

  • linux系统 java环境变量的配置方法

    配置java环境变量 这里是将环境变量配置在etc/profile,即为所有用户配置JDK环境. sudo vi /etc/profile 配置环境变量(注意jdk位置) #set java env export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_171 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOM

  • Linux中Bash环境变量的配置方法

    Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. 以下是几种shell版本,bash是默认的: sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用. Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell. bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bou

  • java环境变量的配置方法图文详解【win10环境为例】

    本文实例讲述了java环境变量的配置方法.分享给大家供大家参考,具体如下: 为什么要配置环境变量: 1. PATH环境变量(Window不区分大小写,Linux系统下必须大写). 作用是指定命令搜索路径 在CMD中执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac java javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac j

  • tomcat以及tomcat环境变量安装配置方法教程

    我们下载安装了tomcat,那么tomcat环境变量配置怎么配置?下面小编就和大家分享下tomcat环境变量的配置. tomcat安装版本 1.JDK:版本为jdk-7-windows-i586.exe    下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.tomcat:版本为apache-tomcat-7.0.33-windows-x86.zip    下载地址http://tomcat.apac

  • tensorflow实现训练变量checkpoint的保存与读取

    1.保存变量 先创建(在tf.Session()之前)saver saver = tf.train.Saver(tf.global_variables(),max_to_keep=1) #max_to_keep这个保证只保存最后一次training的训练数据 然后在训练的循环里面 checkpoint_path = os.path.join(Path, 'model.ckpt') saver.save(session, checkpoint_path, global_step=step) #这里

  • springboot logback如何从apollo配置中心读取变量

    目录 springboot logback 从apollo配置中心读取变量 1.在apollo配置中心添加 2.项目的application.yml配置文件配置如下 3.在logback.xml配置springProperty标签 SpringBoot Logback无法获取配置中心属性 如何解决 解决方案 springboot logback 从apollo配置中心读取变量 1.在apollo配置中心添加 logback-config.properties配置文件 2.项目的applicati

  • springcloud alibaba nacos linux配置的详细教程

    首先从github上下载nacos的压缩包:https://github.com/alibaba/nacos/releases 下载完成之后,通过WinSCP把文件传到linux服务器上 接着通过tar -zxvf命令将此压缩包解压 解压完成之后,进入conf目录下的 clusmter.conf文件打开并在里面加上 通过:wq命令保存退出 接着通过vim命令进入startup.sh 此处修改完成之后,找到这个文件最下面的位置 添加红框中的相关配置,保存退出 接着进入nginx的conf文件中 找

  • python字典快速保存于读取的方法

    在使用python编程过程中,我们往往需要借助字典来提高编程效率.同时为了调试方便,我们希望将某些变量保存为中间文件. 例如,在协同过滤算法中,相似性的训练结果可以保存为中间文件,方便调试.python对字典的保存与读取可以借助于json方便的实现. #保存 dict_name = {1:{1:2,3:4},2:{3:4,4:5}} f = open('temp.txt','w') f.write(str(dict_name)) f.close() #读取 f = open('temp.txt'

随机推荐