基于springboot的項目,springboot整合nacos配置實現實時更新

 2023-10-07 阅读 30 评论 0

摘要:原文鏈接:http://wuwenliang.net/2019/02/22/springboot2-x%E6%95%B4%E5%90%88nacos%E9%85%8D%E7%BD%AE%E6%9C%8D%E5%8A%A1%E5%AE%9E%E7%8E%B0%E9%85%8D%E7%BD%AE%E8%8E%B7%E5%8F%96%E5%8F%8A%E5%88%B7%E6%96%B0/ 本文我將帶領大家在springboot2.x的開發框架中整合alibaba-na

原文鏈接:http://wuwenliang.net/2019/02/22/springboot2-x%E6%95%B4%E5%90%88nacos%E9%85%8D%E7%BD%AE%E6%9C%8D%E5%8A%A1%E5%AE%9E%E7%8E%B0%E9%85%8D%E7%BD%AE%E8%8E%B7%E5%8F%96%E5%8F%8A%E5%88%B7%E6%96%B0/

本文我將帶領大家在springboot2.x的開發框架中整合alibaba-nacos,實現配置獲取及刷新等功能。

引用官方介紹:

Nacos 致力于幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您實現動態服務發現、服務配置管理、服務及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。
Nacos 是構建以“服務”為中心的現代應用架構(例如微服務范式、云原生范式)的服務基礎設施。

可以看到,Nacos主要面向分布式配置級服務發現等領域,由于之前使用過阿里云的ACM配置服務體驗良好,而Nacos便是ACM的開源版本,因此我們選擇了Nacos作為
業務框架的分布式配置中心。

基于springboot的項目、接下來開始進行Nacos的整合。

開始之前,要保證已經搭建好Nacos平臺。

如何安裝Nacos的Server請移步?安裝Nacos

引入nacos-config-spring-boot-starter

在pom.xml中添加如下依賴

<!--nacos-discovery-spring-boot-starter-->
<dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-config-spring-boot-starter</artifactId><version>0.2.1</version>
</dependency>

由于我們的項目的基礎是springboot2.x,使用版本0.2.1即可。對于springboot1.x版本需要引入下面的依賴

<!--nacos-discovery-spring-boot-starter-->
<dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-config-spring-boot-starter</artifactId><version>0.1.1</version>
</dependency>  

application.properties中引入Nacos的config-server地址

在application.properties中添加如下配置

##########################################################################
#
#     Nacos配置
#
##########################################################################
nacos.config.server-addr=172.30.xx.xx:8848,172.30.xx.xx:8848,172.30.xx.xx:8848

我這里使用的nacos服務端是集群模式,地址做了脫敏處理。

編寫配置讀取類NacosConfigAnnoatationService

docker nacos、Nacos的springboot客戶端,提供了簡潔易用的API,支持注解方式對配置進行讀取即刷新。

@Service
@NacosPropertySource(dataId = "com.gaoyang.marketing.rocketmq.order", groupId="DEFAULT_GROUP", autoRefreshed = true)
public class NacosConfigAnnoatationService implements CommandLineRunner {private static final Logger LOGGER = LoggerFactory.getLogger(NacosConfigAnnoatationService.class);/*** ${name:hello}:key=name,默認值=hello*/@NacosValue(value = "${name:hello}", autoRefreshed = true)String name;@NacosValue(value = "${interest:world}", autoRefreshed = true)String interest;@Overridepublic void run(String... args) throws Exception {while (true) {Thread.sleep(4000);LOGGER.info("[NacosConfigAnnoatationService]注解方式獲取到的配置項目,name={},interest={}", name, interest);}}
}

接下來對代碼進行詳細的解釋。

我們編寫了一個測試類,標記為spring的一個Service, 同時標注

@NacosPropertySource(dataId = "com.gaoyang.marketing.rocketmq.order", groupId="DEFAULT_GROUP", autoRefreshed = true)

使用?@NacosPropertySource?加載 dataId 為 com.gaoyang.marketing.rocketmq.order ,groupId如果不配置,則默認為
DEFAULT_GROUP?的配置源,并開啟自動更新。

通過spring的?@Value?注入配置,這里的兩個配置是我在后臺建立好的,如何建立配置在下一章節進行詳細的展開。

以name配置項為例,添加注解

@NacosValue(value = "${name:hello}", autoRefreshed = true)

spring boot常用注解、我們通過@NacosValue 注解設置屬性值,name:hello 表示key為name的配置項的默認值為
hello,autoRefreshed=true表示開啟自動刷新。

我們通過死循環來測試自動刷新是否生效。

控制臺配置配置項

首先進入Nacos配置頁面,輸入賬號密碼,進行登錄,如圖

登錄Naocs控制臺登錄Naocs控制臺

登錄成功后在左側菜單一次展開

配置管理|-配置列表

配置列表配置列表

springboot版本,點擊 “+” 增加配置項。必填項為:dataId,groupId,配置內容。如圖所示

新增配置新增配置

填寫完成后提交即可。

測試配置更新

我們首先運行樣例,將項目啟動。springboot中,對于標注了?@CommandLineRunner?的類,會在項目啟動完后自動加載運行run()方法。

控制臺打印如下內容,四秒打印一次,我截取一部分如下

2019-02-22 11:54:51.209 [main] INFO  c.g.m.d.p.config.NacosConfigAnnoatationService [37] - 
[NacosConfigAnnoatationService]注解方式獲取到的配置項目,name=snowalker,interest=coding
2019-02-22 11:54:55.209 [main] INFO  c.g.m.d.p.config.NacosConfigAnnoatationService [37] - 
[NacosConfigAnnoatationService]注解方式獲取到的配置項目,name=snowalker,interest=coding
2019-02-22 11:54:59.210 [main] INFO  c.g.m.d.p.config.NacosConfigAnnoatationService [37] - 
[NacosConfigAnnoatationService]注解方式獲取到的配置項目,name=snowalker,interest=coding

保持項目運行,我們進入管理控制臺,在配置列表我們的那一項,點擊?編輯

springboot的優點。修改name對應的配置為 snowalker23333 點擊發布如圖

修改配置修改配置

Nacos后臺很貼心的為我們讓我們對修改前后的配置項進行二次確認,點擊確認發布后,查看控制臺日志

2019-02-22 11:55:23.214 [main] INFO  c.g.m.d.p.config.NacosConfigAnnoatationService [37] -
[NacosConfigAnnoatationService]注解方式獲取到的配置項目,name=snowalker,interest=coding
2019-02-22 11:55:27.215 [main] INFO  c.g.m.d.p.config.NacosConfigAnnoatationService [37] - 
[NacosConfigAnnoatationService]注解方式獲取到的配置項目,name=snowalker2333333,interest=code
2019-02-22 11:55:31.215 [main] INFO  c.g.m.d.p.config.NacosConfigAnnoatationService [37] - 
[NacosConfigAnnoatationService]注解方式獲取到的配置項目,name=snowalker2333333,interest=code

可以看到,在項目運行的過程中,配置項熱更新了。

它內部是通過一個Listener監聽器在后臺監聽服務端的推送消息,達到對配置項的熱更新的,和配置文件比起來相當方便了。

小結

本文主要從實戰的角度,帶領讀者在springboot2.x中整合了Nacos實現了配置的讀取及刷新的功能,從應用的角度出發,應當足夠日常開發使用了,更多的
使用技巧和實現細節,我們有機會再講。

Spring Boot。轉載于:https://www.cnblogs.com/fswhq/p/11273157.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/125186.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息