spring cloud alibaba (2)-nacos配置中心
原文链接:spring cloud alibaba (2)-nacos配置中心 – 每天进步一点点
上一篇文章在spring cloud alibaba项目中安装使用了nacos,
spring cloud alibaba (1)-引入nacos进行服务管理
并实现了服务发现功能。这篇文章继续记录nacos配置中心功能。
注:实际操作中,需要热更新的配置才会放到nacos中进行配置管理, 基本不会变更的一些配置还是保存到本地中。
1.统一配置管理
随着微服务越来越多,遇到修改微服务的配置时,需要逐个修改,这样非常浪费时间,然后我们可以使用统一配置管理,这样nacos不仅可以将配置集中管理,而且可以在配置变更时,及时通知微服务,实现配置的热更新。
我们在nacos中添加一个配置文件
创建内容如下:
然后我们创建bootstrap.yml文件,初始配置如下:
注意,这个地方需要说明一下,bootstrap.yml和application-dev.yml都是配置问文件,主要区别就是bootstrap.yml的加载优先于application-dev.yml,所以你可以在某些文章中看到nacos的discovery的配置也放到bootstrap.yml,这个配置影响不大。
另外就是我们把application.yml 改成了application-dev.yml。这个在实际开发中常用(如果不改也不影响本文测试,因为spring boot会一套匹配机制)。dev表示开发环境,prod表示正式环境。而我们bootstrap.yml中的profiles.activie:dev就表示启用开发环境的配置,也就是优先加载application-dev.yml,如果没有再去尝试加载application.yml这个配置。
2.使用配置信息
我们返回到我们Controller的接口部分,我通过@Value注解来读取nacos的配置信息
注意,最好给nacos这些配置信息一个默认值,不然启动的时候读取不到配置,会导致启动失败。
比如改成下面这样:
@Value("${student.name:小猪佩奇}")
这样,nacos如果读取不到student.name这个值,值就变成默认的“小猪佩奇”了。
启动项目,进行测试。
如果启动项目报错,请参考下面两篇文章解决:
nacos 获取配置提示config data not exist
3.实现效果
可以看到,正确显示了nacos的配置信息。
4.实现自动刷新
我们希望我们修改nacos的配置信息后,客户端可以自动刷新配置信息,默认情况下是不刷新的。如下图:
我们在代码中需要的地方加入@RefreshScope注解就可以:
效果如下:
可以看到,在不用重启的情况下,修改了配置信息。