Spring Cloud Alibaba系列-第6节-Nacos动态配置

目录

1. 修改consumer模块的pom文件

2. 修改ConsumerController.java 

3. 新增bootstrap.properties文件

4. 启动项目,并且在Nacos中进行配置

5. 重启comsumer服务,验证是否项目启动加载优先在配置中心获取配置

 6. 为什么是两个配置文件

7. 添加配置的规则

本章节进行Nacos动态配置的实验,具体消费者的服务代码参照《Spring Cloud Alibaba系列-第四节-创建生产者与消费者服务,注册到Nacos监控服务

观博有逻辑,导航来相助《Spring Cloud Alibaba系列-目录导航 


1. 修改consumer模块的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>service-cloud</artifactId>
        <groupId>com.run.ayena</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>service-consumer-8001</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--注册中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- actuator -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
</project>

2. 修改ConsumerController.java 

如下图:增加@RefreshScope 动态刷新,使用@Value注入配置文件中的local.name配置,在echoFeign中进行local.name的返回结果输出

3. 新增bootstrap.properties文件

配置文件内容分别如下:

bootstrap.properties 配置如下

#设置应用名称
spring.application.name=consumer-8001

#指定配置中心的地址与端口
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#指定配置文件的扩展名,不指定的话默认properties
spring.cloud.nacos.config.file-extension=properties
#指定配置文件的group,不指定的话默认DEFAULT_GROUP
spring.cloud.nacos.config.group=consumer

local.name=TestRefreshScope

application.properties配置如下

#设置服务端口号
server.port=8001 

#设置nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

 

4. 启动项目,并且在Nacos中进行配置

点击Nacos配置列表中的加号

按照下图填写内容,并且进行发布

此时在consumer控制台会出现如下图,代表local.name已经进行刷新

访问http://localhost:8001/echo/feign/1111 会发现,动态配置修改已经生效

5. 重启comsumer服务,验证是否项目启动加载优先在配置中心获取配置

验证发现:重启comsumer服务后,首先从Nacos中进行配置读取

 6. 为什么是两个配置文件

Nacos同SpringCloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

Springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application.

 

7. 添加配置的规则

首先之所以需要配置spring.application.name ,是因为它是构成 Nacos 配置管理  dataId 字段的一部分.在 Nacos Spring Cloud 中, dataId 的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}

prefix 默认为  spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix 来配置。

spring.profile.active 即为当前环境对应的 profile, 注意:当  spring.profile.active 为空时,对应的连接符  -- 也将不存在,dataId 的拼接格式变成  ${prefix}.${file-extension}

file-exetension 为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension 来配置。目前只支持  properties 和yaml 类型。

通过 Spring Cloud 原⽣注解  @RefreshScope 实现配置⾃动更新.

最后公式:

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

对照此公式,那么consumer的Data ID 为consumer-8001.properties

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值