Nacos配置的多文件加载与共享配置方式

 更新时间:2022年11月23日 08:59:47   作者:翟永超  
这篇文章主要介绍了Nacos配置的多文件加载与共享配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Nacos配置的多文件加载与共享配置

思考一个问题,现实开发中会遇到这样一个场景,我们把应用拆分成到多个配置文件中,那么Nacos怎么管理多个配置文件?

加载多个配置

我们已经知道Spring应用对Nacos中配置内容的对应关系是通过下面三个参数控制的:

  • spring.cloud.nacos.config.prefix
  • spring.cloud.nacos.config.file-extension
  • spring.cloud.nacos.config.group

默认情况下,我们使用的方式:Data ID=${spring.application.name}.properties Group=DEFAULT_GROUP的配置。

例如:现在有这样需求:我们想要对所有应用的Actuator模块以及日志输出做统一的配置管理。

最简单的实现方式应用相关配置Actuator.properties,日志log.properties 。我们通过拆分这两类的配置,现在需要将其共享

第一步:

在Nacos中创建Data ID=actuator.propertiesGroup=DEFAULT_GROUPData ID=log.propertiesGroup=DEFAULT_GROUP的配置内容。

配置文件

第二步:

在Spring Cloud应用中通过使用spring.cloud.nacos.config.ext-config参数来配置要加载的这两个配置内容,比如:

spring.cloud.nacos.config.ext-config[0].data-id=actuator.properties
spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=log.properties
spring.cloud.nacos.config.ext-config[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[1].refresh=true

可以看到:

  • spring.cloud.nacos.config.ext-config : 置是一个数组List类型。每个配置中包含三个参数:data-idgrouprefresh
  • refresh : 参数控制这个配置文件中的内容时候支持自动刷新,默认情况下,只有默认加载的配置才会自动刷新,对于这些扩展的配置加载内容需要配置该设置时候才会实现自动刷新。

共享配置

通过上述的加载集合的方式实际上已经可以做到共享配置文件了。Nacos中还提供了另外一个便捷的配置方式

spring.cloud.nacos.config.shared-dataids=actuator.properties,log.properties
spring.cloud.nacos.config.refreshable-dataids=actuator.properties,log.properties
  • spring.cloud.nacos.config.shared-dataids: 参数用来配置多个共享配置的Data Id,多个的时候用用逗号分隔
  • spring.cloud.nacos.config.refreshable-dataids : 参数用来定义哪些共享配置的Data IdData Id在配置变化时,应用中可以动态刷新,多个``之间用逗号隔开。如果没有明确配置,默认情况下所有共享配置都不支持动态刷新

配置加载的优先级

当我们加载多个配置的时候,如果存在相同的key时,我们需要深入了解配置加载的优先级关系。

在使用Nacos配置的时候,主要有以下三类配置:

  • 通过spring.cloud.nacos.config.shared-dataids定义的共享配置
  • 通过spring.cloud.nacos.config.ext-config[n]定义的加载配置
  • 通过内部规则(spring.cloud.nacos.config.prefix、spring.cloud.nacos.config.file-extension、spring.cloud.nacos.config.group这几个参数)拼接出来的配置

要弄清楚这几个配置加载的顺序,我们把这几个配置加到应用上,观察日志

spring.cloud.nacos.config.ext-config[0].data-id=actuator.properties
spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.shared-dataids=log.properties
spring.cloud.nacos.config.refreshable-dataids=log.properties

加载顺序

我们通过日志可以看到加载顺序:A < B < C

参考资料:Nacos官方文档

无法加载nacos配置中心的配置

在bootstrap.properties文件中对于nacos的地址配的有问题,由于idea的提示没仔细看应该配nacos的config地址,而不是discovery地址,虽然只有一点差距,但是检查起来真难

spring.cloud.nacos.config.server-addr=

写成了

spring.cloud.nacos.discovery.server-addr=

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中switch的三种用法方式小结

    Java中switch的三种用法方式小结

    这篇文章主要介绍了Java中switch的三种用法方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • SpringBoot3解决跨域请求的方案小结

    SpringBoot3解决跨域请求的方案小结

    解决跨域请求,主要有JSONP,iframe,window.name,CORS等方式,其中CORS方式是最常用的跨域实现方式,而且是对各种请求方法、各种数据请求类型都是完美支持的,本文介绍了SpringBoot3解决跨域请求的方案小结,需要的朋友可以参考下
    2024-07-07
  • springboot框架阿里开源低代码工具LowCodeEngine

    springboot框架阿里开源低代码工具LowCodeEngine

    这篇文章主要为大家介绍了springboot框架阿里开源低代码LowCodeEngine工具使用详解有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • java对接第三方接口的3种常用方式

    java对接第三方接口的3种常用方式

    java语言中调用第三方接口,可以使用的方法有很多,下面这篇文章主要给大家介绍了关于java对接第三方接口的3种常用方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Java多线程系列之JDK并发包举例详解

    Java多线程系列之JDK并发包举例详解

    Java并发包提供了许多用于多线程编程的类和接口,这篇文章主要给大家介绍了关于Java多线程系列之JDK并发包的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • springboot项目docker分层构建的配置方式

    springboot项目docker分层构建的配置方式

    在使用dockerfile构建springboot项目时,速度较慢,用时比较长,为了加快构建docker镜像的速度,采用分层构建的方式,这篇文章主要介绍了springboot项目docker分层构建,需要的朋友可以参考下
    2024-03-03
  • Java实现读取项目中文件(.json或.properties)的方法详解

    Java实现读取项目中文件(.json或.properties)的方法详解

    这篇文章主要为大家详细介绍了Java实现读取项目中文件的方法,例如.json或.properties,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04
  • 浅谈web项目读取classpath路径下面的文件

    浅谈web项目读取classpath路径下面的文件

    这篇文章主要介绍了浅谈web项目读取classpath路径下面的文件,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • SpringBoot自定义start详细图文教程

    SpringBoot自定义start详细图文教程

    这篇文章主要给大家介绍了关于SpringBoot自定义start的相关资料,主要讲述如何自定义start,实现一些自定义类的自动装配,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 详解Spring如何扫描自定义的注解

    详解Spring如何扫描自定义的注解

    本文给大家详细介绍了Spring如何扫描自定义的注解,在Spring中,可以使用注解来实现依赖注入、AOP等功能,同时,Spring也支持自定义注解,使得开发人员可以更灵活地使用注解,需要的朋友可以参考下
    2024-02-02

最新评论