記錄配置nacos-config(隨記)

前言

在了解網(wǎng)關(guān)后,知道網(wǎng)關(guān)需要注冊(cè)中心來(lái)監(jiān)控,以及需要統(tǒng)一的配置文件中心,進(jìn)行配置文件管理;

前提

在搭建配置中心時(shí),需要先下載并運(yùn)行Nacos;

搭建時(shí)請(qǐng)嚴(yán)格按照 Nacos 依賴(lài)關(guān)系構(gòu)建項(xiàng)目,不然會(huì)有意想不到的收獲,甚至自閉一段時(shí)間;
下面時(shí)我拷貝的一份依賴(lài)關(guān)系圖:


image.png

版本說(shuō)明 · alibaba/spring-cloud-alibaba Wiki

構(gòu)建項(xiàng)目依賴(lài)管理

<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
    <hutool.version>5.6.2</hutool.version>
    <alibaba.version>2.2.5.RELEASE</alibaba.version>
    <spring.boot.vsersion>2.3.2.RELEASE</spring.boot.vsersion>
    <spring.cloud.version>Hoxton.SR8</spring.cloud.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>${spring.boot.vsersion}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring.cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>${hutool.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

以上是搭建nacos-config配置中心需要管理的依賴(lài);

構(gòu)建子模塊

項(xiàng)目關(guān)系

image.png

pom.xml 依賴(lài)引入

  <dependencies>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>
  </dependencies>

resource配置

在 resource 目錄下,新建 bootstrap.yml 文件,并寫(xiě)入配置:

spring:
  cloud:
    nacos:
      config:
        file-extension: yaml
        server-addr: 127.0.0.1:8848
  application:
    name: nacos-config

啟動(dòng)類(lèi)

@SpringBootApplication
public class NacosConfigApplication {

  public static void main(String[] args) {
    ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
    String useLocalCache= applicationContext.getEnvironment().getProperty("useLocalCache");
    System.err.println("useLocalCache :" + useLocalCache+ "<<<<<<");
  }
}

此處目的是,打印出 useLocalCache 配置是否從 nacos服務(wù)中的配置管理里面動(dòng)態(tài)獲取到了。

構(gòu)建controller 測(cè)試動(dòng)態(tài)配置

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

  @Value("${useLocalCache:false}")
  private boolean useLocalCache;

  @RequestMapping("/get")
  public boolean get() {
    return useLocalCache;
  }
}

@RefreshScope 用來(lái)動(dòng)態(tài)刷新配置的。

測(cè)試步驟

1. 寫(xiě)一個(gè) yaml 配置到 nacos 服務(wù)里面

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache: true"

2. 啟動(dòng) nacos-config 項(xiàng)目

GET 請(qǐng)求 http://localhost:8080/config/get:

image.png

3. 修改配置并重新查詢(xún)

修改
image.png
再次查詢(xún)
image.png

總結(jié)

至此,nacos的配置管理就完成的;

說(shuō)一下這里碰到的幾個(gè)坑:

  1. 版本依賴(lài)問(wèn)題:

一開(kāi)始我選擇的是Spring Cloud 2020.0、Spring Cloud Alibaba 2021.1、Spring Boot 2.4.2.RELEASE,然后發(fā)現(xiàn) Spring Boot 只有 2.4.2 版本,沒(méi)有后綴 RELEASE,然后啟動(dòng)項(xiàng)目后,發(fā)現(xiàn)一直獲取不到nacos上設(shè)置的值,網(wǎng)上百度了一堆,自己也都嘗試了下,發(fā)現(xiàn)都不行,最后就決定給版本降級(jí),事情就解決了,如果有知道原因的小伙伴,可以私聊告訴我,感謝!

  1. 容易混淆的文件擴(kuò)展:

bootstrap.yml的文件后綴,和 bootstrap.yml 里面配置的 file-extension: yaml,是不同的東西;
file-extension: yaml 指的是基于 dataid 為 yaml 的文件擴(kuò)展名配置方式,這個(gè)是nacos服務(wù)里面的配置,是我們動(dòng)態(tài)刷新獲取的配置的格式,不是我們構(gòu)建的項(xiàng)目里的bootstrap.yml

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容