Nacos热更新(动态获取配置)

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞👍👍、收藏⭐️⭐️,满足一下我的虚荣心💖🙏🙏🙏 。

在这一篇 Nacos作为配置中心-CSDN博客 

中提到使用@RefreshScope注解动态的获取配置中心的数据,这里详细补充记录一下。

目录

测试准备

动态获取配置

@value和@RefreshScope

@ConfigurationProperties(prefix = "")和@RefreshScope


测试准备

首先,在nocos中添加配置:

readTimeout: 5000 

然后,在测试方法中添加如下代码:

@Value("${readTimeout}")
private String readTimeout; 

@GetMapping(value = "/readTimeout")
public String testConfig() {
   return readTimeout;
}

测试

启动项目后浏览器访问如下地址:

http://localhost:18880/consumer/readTimeout

浏览器返回如下:

此时我们把nocos配置中的readTimeout值改为50000后再次访问上面的地址,发现浏览器返回的依然是5000。

动态获取配置

在nocos配置中修改后不重启项目立即生效的现象我们就可以叫他动态获取。想要实现动态获取配置,我们可以使用如下两种方式:

1、使用@value和@RefreshScope
2、@ConfigurationProperties(prefix = "")和@RefreshScope

@value和@RefreshScope

首先我们试下@value和@RefreshScope的方式,只要将上面测试方法的类上加上@RefreshScope注解即可,完整代码如下:

@RefreshScope
@RestController
@RequestMapping("/consumer") 
public class TestController {


    @Value("${readTimeout}")
    private String readTimeout;


    @GetMapping(value = "/readTimeout")
    public String testConfig() {
        return readTimeout;
    }


}
@ConfigurationProperties(prefix = "")和@RefreshScope

当要配置的属性较多的时候,使用上面的方式就有点麻烦,也可以使用@ConfigurationProperties注解,建立一个类来装数据,比如nocos中有如下数据:

user:
  age: 18
  sex: 男

我们可以使用@ConfigurationProperties建立一个类来接收配置中的数据,如下:

@Component
@ConfigurationProperties(prefix = "user")
@Data
public class NacosPropertiesConfig {
    private String sex;
    private String age;

}

然后测试类中添加如下方法进行测试:

@RefreshScope
@RestController
public class TestController {

    @Value("${readTimeout}")
    private String readTimeout;


    @Autowired
    private NacosPropertiesConfig propertiesConfig;



    @GetMapping(value = "/readTimeout")
    public String testConfig() {
        return readTimeout;
    }


    @GetMapping(value = "/user")
    @ResponseBody
    public NacosPropertiesConfig testConfig2() {
        return propertiesConfig;
    }

此时访问 http://localhost:18880/consumer/user    ,浏览器返回如下:

将年龄改为30后再次访问,结果如下:

如上使用两种方式实现了配置文件的动态获取。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-12 15:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-12 15:40:03       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-12 15:40:03       82 阅读
  4. Python语言-面向对象

    2023-12-12 15:40:03       91 阅读

热门阅读

  1. postgresql数据库中的建表和约束

    2023-12-12 15:40:03       64 阅读
  2. GSIL:GitHub敏感信息泄露监控工具使用

    2023-12-12 15:40:03       65 阅读
  3. 找到字符串中所有字母异位词(LeetCode 438)

    2023-12-12 15:40:03       52 阅读
  4. 树莓派5安装opencv

    2023-12-12 15:40:03       64 阅读
  5. K12484 银行排队(bank)

    2023-12-12 15:40:03       61 阅读
  6. 飞行控制系统软件设计

    2023-12-12 15:40:03       57 阅读
  7. 一篇文章让你读懂Jenkins的用途

    2023-12-12 15:40:03       53 阅读
  8. 【后端】系统设计类题目汇总五

    2023-12-12 15:40:03       53 阅读