# 《Seckill秒杀系统》第100章:实现配置动态刷新

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:了解整合配置中心实现动态刷新的落地实现方案,熟练掌握业务系统整合Nacos配置中心的方法与落地方案,并掌握整合配置中心后,实现动态刷新的落地方案。并能够灵活将实现方案应用到自身实际项目中。

大家好,我是冰河~~

细心的小伙伴可能已经发现了,之前我们将微服务的配置放入了Nacos,但是此时如果在Nacos中修改了配置,程序是无法读取到修改后的配置的。所以,我们需要实现动态刷新的功能。

# 一、前言

虽然我们已经将项目的配置整合到了Nacos配置中心,但是程序无法读取到修改后的配置,同时,每个微服务的配置中会有公共的配置部分,但是这部分公共配置也没有抽取出来,还是散落在每个微服务的Nacos配置中,实际上并没有减轻多少维护微服务配置的工作量。

# 二、本章诉求

秒杀系统整合Nacos配置实现动态刷新功能,在Nacos配置中修改配置项后,程序能够动态读取到修改后的最新配置。重点掌握业务系统整合Nacos配置中心的方法与落地方案,并掌握整合配置中心后,实现动态刷新的落地方案。并能够灵活将实现方案应用到自身实际项目中。

# 三、实现动态刷新

本节,我们以用户微服务实现配置动态刷新为例进行说明,其他微服务实现配置动态刷新的方式与用户微服务实现动态刷新的方式相同,这里不再赘述。大家可以拿到本章对应的源码后,自行查看代码即可。另外,本章涉及到的各个微服务动态刷新配置的Nacos配置,已经放到本章源码分支的environment/config/nacos/chapter100目录下,大家根据具体需要,自行将配置导入Nacos即可,也可以根据本章的内容自行在Nacos中进行配置。

# 3.1 修改Nacos配置

在Nacos中修改seckill-user-dev.properties的配置,在seckill-user-dev.properties配置中新增配置项seckill.author.name=binghe,如图100-1所示。


添加配置项后点击发布即可完成配置的修改操作。

# 3.2 通过IOC容器获取Nacos配置

通过IOC容器动态获取Nacos配置的具体步骤如下所示。

(1)在NacosController类中注入org.springframework.context.ConfigurableApplicationContext类,通过ConfigurableApplicationContext获取到系统环境变量,并从环境变量中获取到seckill.author.name属性的值,就是我们在Nacos中配置的作者姓名。

NacosController类的源码详见:seckill-user-interfaces工程下的io.binghe.seckill.user.controller.NacosController。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码