【第10章】Spring Cloud之Nacos动态配置


前言

这一章我们通过两个案例来学习Nacos动态配置,通过在控制台修改服务端配置文件值,并查看配置的变化。


一、上下文

1. 新增配置

在这里插入图片描述

2. 启动类

这里为了方便,可以直接使用启动类的上下文

package org.example.nacos.provider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.ConfigurableApplicationContext;

import java.util.concurrent.TimeUnit;

@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryProviderApplication {

    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosDiscoveryProviderApplication.class, args);
        while(true) {
            //当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置
            String userName = applicationContext.getEnvironment().getProperty("user.name");
            String userAge = applicationContext.getEnvironment().getProperty("user.age");
            System.err.println("user name :" + userName + "; age: " + userAge);
            TimeUnit.SECONDS.sleep(1);
        }
    }

}

3. 效果

非常好用,基本上新配置发布完,下一秒后端刷新了key,直接就是新的配置

在这里插入图片描述

二、注解 ( 推荐 ) \color{#00FF00}{(推荐)} (推荐)

1. 获取配置

package org.example.nacos.provider.controller;

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("${query.type:1}")
    private int type;

    @RequestMapping("/get")
    public String get() {
        return switch (type) {
            case 1 -> "redis";
            case 2 -> "db";
            case 3 -> "timer";
            case 4 -> "baffle";
            default -> throw new IllegalStateException("Unexpected value: " + type);
        };
    }
}

2. 测试

2.1 未配置

在这里插入图片描述

2.2 配置值

在这里插入图片描述
在这里插入图片描述

2.3 修改值

在这里插入图片描述
在这里插入图片描述


总结

回到顶部

Amazing,这极大地增加了程序的灵活性,不是吗?
它可以用来动态控制业务逻辑,动态控制日志级别,动态调整规则等等。

你可以通过配置 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值