SpringCloud+Nacos實現(xiàn)服務配置中心(Hoxton版本)
點擊上方藍色字體,選擇“標星公眾號”
優(yōu)質(zhì)文章,第一時間送達
作者 | 懸鈴木pp
來源 | urlify.cn/7BJV3a
關于 Nacos Spring Cloud 的詳細文檔請參看:Nacos Config和Nacos Discovery。
通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實現(xiàn)配置的動態(tài)變更。
通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 實現(xiàn)服務的注冊與發(fā)現(xiàn)。
前提條件
首先下載安裝一個nacos server,然后啟動nacos server。下載和安裝流程查看https://www.cnblogs.com/ying-z/p/14630738.html
新建配置
可以通過兩種方式新建配置。
方式一:訪問Nacos Server頁面手動創(chuàng)建。
首先登錄Nacos Server,地址一般為http://127.0.0.1:8848/nacos/index.html。
然后進入配置列表,點擊新增配置按鈕,進入新增配置頁面。


注意:
這里我創(chuàng)建Data Id為nacos-config.properties的配置文件,其中Group為默認的DEFAULT_GROUP,配置文件的格式也相應的選擇Properties,配置內(nèi)容中添加配置nacos.config=hello_nacos,如圖所示。

方式二:通過調(diào)用Nacos Open API向Nacos Server發(fā)布配置:dataId為nacos-config.properties,內(nèi)容為nacos.config=hello_nacos
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config.properties&group=DEFAULT_GROUP&content=nacos.config=hello_nacos"
創(chuàng)建服務應用
(1)使用SpringBoot,創(chuàng)建一個名為nacos-config的子工程。
(2)pom.xml文件添加如下依賴。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<!-- 聲明Spring cloud的版本為Hoxton.SR3-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 聲明Spring cloud alibaba版本為2.1.0.RELEASE -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 聲明nacos-discovery依賴 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 聲明nacos-config依賴 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
備注:如果不需要注冊該服務,也可以去掉nacos-discovery依賴。
注意:版本2.1.x.RELEASE 對應的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 對應的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 對應的是 Spring Boot 1.5.x 版本。
更多版本對應關系參考:版本說明 Wiki
(3)修改application.properties添加相關配置
server.port=9002
spring.application.name=nacos-config
spring.application.cloud.nacos.discovery.server-addr=127.0.0.1:8848(4)創(chuàng)建配置文件,文件名為bootstrap.properties。并在bootstrap.properties中配置Nacos server的地址和應用名。
注意:文件名是bootstrap.xxx,而不是application或者其他。因為Nacos同Spring Cloud Config一樣,在項目初始化時,要保證先從配置中心進行配置拉取,拉取配置之后,才能保證項目的正常啟動。SpringBoot中配置文件的加載是存在優(yōu)先級順序的,bootstrap優(yōu)先級高于application。
這里的配置文件類型可以根據(jù)個人習慣選擇,我這里用的時properties類型,配置內(nèi)容如下:
#服務名稱
spring.application.name=nacos-config
#指定注冊中心的地址。如果你不需要注冊該服務,也可以去掉該項,并刪除discovery依賴。
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#指定配置中心的地址。
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#指定配置中心中配置文件的格式。
#spring.cloud.nacos.config.file-extension=properties
之所以需要配置spring.application.name,是因為它是構(gòu)成Nacos配置管理dataId字段的一部分。
在Nacos-Server配置管理,其中Data ID它的定義規(guī)則是:
${prefix}-${spring.profile.active}.${file-extension}prefix:默認為spring.application.name的值,也可以通過配置項spring.cloud.nacos.config.prefix來配置。
spring.profile.active:即為當前環(huán)境對應的profile,詳情可以參考 Spring Boot文檔。可以通過配置項spring.profile.active來配置。當spring.profile.active為空時,對應的連接符 - 也將不存在,dataId的拼接格式變成 ${prefix}.${file-extension}。
file-exetension:為配置內(nèi)容的數(shù)據(jù)格式,可以通過配置項spring.cloud.nacos.config.file-extension來配置。目前只支持properties和yaml類型。
(5)創(chuàng)建對外接口ConfigController,從nacos中讀取配置。
@RefreshScope
@RestController
public class ConfigController {
@Value("${nacos.config}")
private String configValue;
@RequestMapping("/config/get")
public String get() {
return configValue;
}
}
@RefreshScope:Spring Cloud的原生注解,可以使當前類下的配置支持動態(tài)更新。
@Value:通過@Value注解,去讀取key為nacos.config的配置的值,并通過/config/get接口返回。
到此代碼部分的工作已經(jīng)完成。
啟動服務進行測試
(1)保證Nacos-Server已經(jīng)啟動。
(2)檢查Nacos-Server中配置列表中是否已經(jīng)添加相應的配置文件。
(3)啟動nacos-config項目。
(4)啟動成功后在Nacos控制臺中可以看到我們注冊的服務。
(5)此時調(diào)用接口進行測試http://127.0.0.1:9002/config/get,可以看到返回結(jié)果。

此時說明已經(jīng)成功讀取到配置。
(6)下面我將Nacos-Server上的配置修改為hello_lars,看看能否動態(tài)更新。修改Nacos-Server上的配置后,刷新http://127.0.0.1:9002/config/get頁面,結(jié)果更新為新的配置了。

可以看到我通過Nacos-server的控制臺進行配置的修改,客戶端服務nacos-config也相應的進行熱更新。
粉絲福利:Java從入門到入土學習路線圖
??????

??長按上方微信二維碼 2 秒
感謝點贊支持下哈 
