SpringBoot使用Nacos配置中心


注意:

1.配置文件格式設置為properties無法發布,js報錯,可以設置為text格式
2.springboot項目的配置文件不能為application,要為bootstrap

還有項目發布必須先啟動nacos,配置dataid,如果nacos比子系統后啟動,再去配dataid等信息,動態刷新永遠無法生效,這個也是比較坑的點

 

轉:

 參考:

SpringBoot使用Nacos作為配置中心服務和服務注冊中心

 

主要:

Nacos(四):SpringCloud項目中接入Nacos作為配置中心

 

前言

通過前兩篇文章:

相信大家已經對Nacos作為注冊中心的基本使用已經有了一定的了解。

然而,Nacos遠遠不止於此,本文我們來看一下Nacos作為配置中心在SpringCloud中的使用

我的環境

  • Windows10
  • JDK8
  • SpringCloud:Finchley.RELEASE
  • SpringBoot:2.0.4.RELEASE
  • spring-cloud-alibaba-dependencies:0.2.2.RELEASE
  • Nacos-server:1.0.1

本文的項目Demo繼續沿用之前文章中的聚合工程Nacos,若小伙伴還沒有之前的環境,可至源碼地址中下載

啟動Nacos-Server

進入bin文件夾(目錄:nacos-server-1.0.1\nacos\bin),直接雙擊執行startup.cmd文件,這里具體的啟動細節就不再說明

新建配置

在Nacos-Server中新建配置,其中Data ID它的定義規則是:${prefix}-${spring.profile.active}.${file-extension}

  • prefix 默認為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix 來配置。
  • spring.profile.active 即為當前環境對應的 profile,可以通過配置項 spring.profile.active 來配置。
  • file-exetension 為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 propertiesyaml 類型。

注意:當 spring.profile.active 為空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}

這里我創建Data Id 為nacos-config.yml的配置文件,其中Group為默認的DEFAULT_GROUP,配置文件的格式也相應的選擇yaml,其內添加配置nacos.config=hello_nacos,如圖所示

創建應用

1、在聚合工程Nacos下新建Module,創建一個名為nacos-config的子工程,其pom.xml文件內容如下

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <artifactId>Nacos</artifactId>
  7. <groupId>com.study.www</groupId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.larscheng.www</groupId>
  11. <artifactId>nacos-config</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>nacos-config</name>
  14. <description>Demo project for Spring Boot</description>
  15. <properties>
  16. <java.version>1.8</java.version>
  17. </properties>
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.cloud</groupId>
  21. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.springframework.cloud</groupId>
  25. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  26. </dependency>
  27. </dependencies>
  28. <build>
  29. <plugins>
  30. <plugin>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-maven-plugin</artifactId>
  33. </plugin>
  34. </plugins>
  35. </build>
  36. </project>

2、創建配置文件名為bootstrap.yml,注意是bootstrap.xxx,而不是application或者其他。原因如下

Nacos同springcloud-config一樣,在項目初始化時,要保證先從配置中心進行配置拉取,拉取配置之后,才能保證項目的正常啟動。springboot中配置文件的加載是存在優先級順序的,bootstrap優先級高於application

這里的配置文件類型可以根據個人習慣選擇,我這里用的時yml類型,配置內容如下

  1.  
  2. spring:
  3. application:
  4. name: nacos-config
  5. cloud:
  6. nacos:
  7. discovery:
  8. server-addr: 127.0.0.1:8848
  9. config:
  10. server-addr: 127.0.0.1:8848
  11. file-extension: yml

可以看到必須可少的配置項spring.application.name

spring.cloud.nacos.discovery.server-addr指定注冊中心的地址,如果你不需要注冊該服務,也可以去掉該項,並刪除discovery依賴

spring.cloud.nacos.config.server-addr指定配置中心的地址

file-extension指定配置中心中配置文件的格式

上面的配置是為了保證服務的正常注冊和配置獲取,以及配置DataID的正確性

3、創建對外接口來從nacos中讀取配置,NacosConfigApplication.java修改如下

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. @RestController
  4. @RefreshScope
  5. public class NacosConfigApplication {
  6. public static void main(String[] args) {
  7. SpringApplication.run(NacosConfigApplication.class, args);
  8. }
  9. @Value("${nacos.config}")
  10. private String config;
  11. @RequestMapping("/getValue")
  12. public String getValue() {
  13. return config;
  14. }
  15. }

其中通過@Value注解,去讀取key為nacosconfig的配置的值,並通過/getValue接口返回。

加入@RefreshScope注解,可以使當前類下的配置支持動態更新。

到此代碼部分的工作已經完成

啟動測試

  1. 保證Nacos-Server已經啟動
  2. 檢查配置文件是否已經添加
  3. 啟動nacos-config項目

啟動成功后在Nacos控制台中可以看到我們注冊的服務

此時調用接口進行測試 http://127.0.0.1:8080/getValue ,可以看到返回結果

hello_nacos

此時說明已經成功讀取到配置,下面我將Nacos-Server上的配置修改為hello_lars,看看能否動態更新

調用接口進行測試 http://127.0.0.1:8080/getValue ,返回結果如下

hello_lars

可以看到我通過Nacos-server的控制台進行配置的修改,客戶端服務nacos-config也相應的進行熱更新。

總結

通過上面的測試,可見Nacos做配置中心,在SpringCloud項目中,也可以做到無縫銜接,切換到Nacos可以說知識修改配置的問題,成本也很低

項目的其他配置不變,只需要指定配置中心地址,同時將配置文件外部管理。

本文源碼https://github.com/larscheng/larscheng-learning-demo/tree/master/Nacos

參考

Nacos Spring Cloud




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM