栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Cloud Alibaba 教程 | Nacos(五)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Cloud Alibaba 教程 | Nacos(五)

扩展配置(extended configurations)

通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profiles.active} . ${file-extension} 默认Group为public的配置文件,并且可以通过下面三个参数指定修改默认的配置文件:

  • spring.cloud.nacos.config.prefix
  • spring.cloud.nacos.config.file-extension
  • spring.profiles.active

有时候一个模块项目需要多个配置文件,这时候我们就可以使用nacos的扩展配置参数(extended configurations)引用同一个namesapce下面更多的配置文件。

第一步:创建多个配置文件。我们在默认的namespace下创建了三个配置文件,其中nacos-consumer.properties配置在默认的组DEFAULT_GROUP,database.properties和log.properties则配置在Group_A组里。

  • database.properties配置内容是:database.url=127.0.0.1
  • log.properties配置配置内容是:log.data=/home/logs
  • consumer.properties配置配置内容是:config.address=shanghai


第二步:应用引入nacos注册中心,加载多个配置文件。



    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-config

spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
 server-addr: 192.168.0.127:8848 #注册中心地址
      config:
 server-addr: 192.168.0.127:8848 #配置中心地址
 ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
   - data-id: database.properties
     group: GROUP_A
     refresh: true
   - data-id: log.properties
     group: GROUP_A
     refresh: true

server:
  port: 17358

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

第三步:使用配置参数,验证结果。

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumer {

    public static void main(String[] args) {
 SpringApplication.run(NacosConsumer.class,args);
    }

    @RefreshScope
    @RestController
    public class TestController {

 @Value("${config.address}")
 private String address;

 @Value("${database.url}")
 private String url;

 @Value("${log.data}")
 private String data;

 @GetMapping("/getConfig")
 public String getConfig() {
     return "address:"+address+" url:"+url+" data:"+data;
 }

    }

}

共享配置(shared configurations)

上面的扩展配置实际上是一种namesapce下的共享配置,根据上一篇文章环境隔离的经典案例划分,就是一种企业内各项目之间的共享配置。有时候我们希望有些配置文件只在同一个项目下的不同的环境之间共享(实际上是一种group下的共享配置),这时候就可以使用Nacos的共享配置(shared configurations)去实现。
添加一个内容为database.url=127.0.0.2的新的配置文件database.properties,Group为DEFAULT_GROUP。

spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
 server-addr: 192.168.0.127:8848 #注册中心地址
      config:
 server-addr: 192.168.0.127:8848 #配置中心地址
 ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
   - data-id: database.properties
     group: GROUP_A
     refresh: true
   - data-id: log.properties
     group: GROUP_A
     refresh: true
 #可以加载当前group下面的多个配置文件
 shared-dataids: database.properties
 refreshable-dataids: database.properties

server:
  port: 17358


我们发现结果是相同的,首先我们先来看下应用加载这些配置文件的顺序,可以从控制台看到配置的文件的加载顺序:

Loading nacos data, dataId: 'database.properties', group: 'DEFAULT_GROUP'
Loading nacos data, dataId: 'database.properties', group: 'GROUP_A'
Loading nacos data, dataId: 'log.properties', group: 'GROUP_A'
Loading nacos data, dataId: 'nacos-consumer.properties', group: 'DEFAULT_GROUP'

1、先加载shared-dataids配置
2、再加载ext-config配置
3、最后加载默认配置

因为shared-dataids配置被最先加载,所以后面的ext-config配置会覆盖前面的配置,所以导致新增加的database.properties没有起作用。
删掉group为GROUP_A的database.properties文件之后,屏蔽掉相关配置,重启应用结果就会发生改变。

spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
 server-addr: 192.168.0.127:8848 #注册中心地址
      config:
 server-addr: 192.168.0.127:8848 #配置中心地址
 ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
  # - data-id: database.properties
  #   group: GROUP_A
  #   refresh: true
   - data-id: log.properties
     group: GROUP_A
     refresh: true
 #可以加载当前group下面的多个配置文件
 shared-dataids: database.properties
 refreshable-dataids: database.properties

server:
  port: 17358

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号