Spring Cloud Alibaba | Nacos配置管理

来源:https://www.cnblogs.com/babycomeon/archive/2019/07/16/11185168.html
-Advertisement-
Play Games

Spring Cloud Alibaba | Nacos配置管理 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如無特殊說明,本系列文章全採用以上版本 [TOC] 上一篇 "《Spring Cloud Alibaba | Nacos服務註冊 ...


目錄

Spring Cloud Alibaba | Nacos配置管理

Springboot: 2.1.6.RELEASE

SpringCloud: Greenwich.SR1

如無特殊說明,本系列文章全採用以上版本

上一篇《Spring Cloud Alibaba | Nacos服務註冊與發現》我們聊了Nacos服務註冊與發現,這一篇我們接著聊Nacos配置管理。

Nacos具有配置管理的功能,在Spring Cloud中可以用作配置中心,代替Spring Cloud Config組件,下麵我們聊一下Nacos如何和Spring Cloud集成配置中心。

創建一個項目:nacos-config

1. pom.xml 項目依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.springcloud</groupId>
    <artifactId>nacos-config</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacos-config</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

主要引入spring-cloud-starter-alibaba-nacos-config,為開啟nacos配置中心

更多版本對應關係請參考:《Spring Cloud Alibaba | Nacos服務中心初探》

2. 在 bootstrap.properties 中配置 Nacos server 的地址和應用名

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.application.name=spring-cloud-nacos-config

說明:之所以需要配置 spring.application.name ,是因為它是構成 Nacos 配置管理 dataId欄位的一部分。

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix 預設為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
  • spring.profile.active 即為當前環境對應的 profile,詳情可以參考 Spring Boot文檔。 註意:當 spring.profile.active 為空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
  • file-exetension 為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 propertiesyaml 類型。

3. 通過 Spring Cloud 原生註解 @RefreshScope 實現配置自動更新:

package com.springcloud.nacosconfig.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created with IntelliJ IDEA.
 *
 * @Date: 2019/7/14
 * @Time: 18:13
 * @email: [email protected]
 * Description:
 */
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

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

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

4. 測試

首先通過調用 Nacos Open APINacos Server 發佈配置:dataId 為example.properties,內容為useLocalCache=true

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

運行 NacosConfigApplication,調用 curl http://localhost:8080/config/get,返回內容是 true

再次調用 Nacos Open APINacos server 發佈配置:dataId 為example.properties,內容為useLocalCache=false

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

再次訪問 http://localhost:8080/config/get,此時返回內容為false,說明程式中的useLocalCache值已經被動態更新了。

至此,Nacos配置管理已經介紹完成。

參考:

https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

Github-示例代碼


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • "HTML基本結構" "HTML頭部標簽" meta 標簽 link 標簽 base 標簽 "HTML標簽" "HTML 標簽分類" "HTML 標簽屬性" "排版標簽" "文本格式化標簽" "圖片標簽 img" "鏈接標簽 a" "列表標簽" "表格標簽 table" "表單標簽 form" in ...
  • 在家裡安裝這個包,總是報錯安裝失敗,換成最快的淘寶鏡像也是如此,先卸載重新安裝亦是如此,於是想到了原因,到了公司,公司的網是可以連接國外的,安裝成功了! 也就是說,需要翻牆才可以裝成功。 ...
  • 近日,需要在網頁上做一個純H5的、基於三維場景的應用,網上搜了下,發現ThingJS平臺(https://www.thingjs.com/)是個不錯的選擇...... ThingJS 是一個物聯網3D可視化PaaS平臺,基於WebGL,相容各種瀏覽器及移動設備,零門檻、高效率、低成本開發各類3D應用 ...
  • 閉包的形成與變數的作用域及生命周期密切相關,所以在理解閉包前,須理解變數作用域。作用域分全局和局部作用域,是指變數有效訪問的範圍。變數無權訪問子作用域,只能訪問自己和父級以上的作用域。 預編譯 當函數執行時,會創建一個執行期上下文(即作用域)的對象AO(存儲在 中), 一個新的AO指向 定義了一個函 ...
  • 摘要: 性能彪悍的V8引擎。 《 "JavaScript深入淺出" 》系列 : "JavaScript深入淺出第1課:箭頭函數中的this究竟是什麼鬼?" "JavaScript深入淺出第2課:函數是一等公民是什麼意思呢?" "JavaScript深入淺出第3課:什麼是垃圾回收演算法?" "JavaS ...
  • SRP = Single Responsibility Principle 定義:就一個類而言,應該只有一個能引起他變化的原因。通俗的說,即一個類只負責一項職責。 作用: 1、減少了類之間的耦合 2、最簡單最單純的事情才是最容易控制,最有效 3、當需求變化時,只需要修改一個地方 4、 避免寫臃腫的方 ...
  • Spring Cloud Alibaba | Nacos集群部署 [TOC] 1. Nacos支持三種部署模式 單機模式 用於測試和單機試用。 集群模式 用於生產環境,確保高可用。 多集群模式 用於多數據中心場景。 以上是官方提供的三種部署方式:單機模式對於企業來講,僅可用於測試環境或者開發環境,不 ...
  • <?phpclass db{ public $table=null; public $pdo; public $where=null; //where 條件 public $field=null; //要查詢的條件 public function __construct() { $this->pdo ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...