Spring Cloud學習筆記(Nacos):配置中心基礎和代碼樣例

這是本人學習的總結,主要學習資料如下
- 馬士兵教育

  • 1、Overview
  • 2、樣例
    • 2.1、Dependency
    • 2.2、配置文件的定位
    • 2.3、bootstrap.yml
    • 2.4、配置中心新增配置
    • 2.5、驗證

1、Overview

配置中心用于管理配置項和配置文件,比如平時寫的application.yml就是配置文件。

我們可以把配置文件存在配置中心中,然后動態獲取配置文件。更方便的是,我們可以動態修改配置文件,在不重啟系統的情況下更新配置。


2、樣例

我會建立一個Spring項目,將其注冊到Nacos中,然后從Nacos動態獲取配置。

2.1、Dependency

首先是作為一個普通的Client需要注冊到Nacos中,另外想要從Nacos中獲取配置則需要加上spring-cloud-starter-alibaba-nacos-config這個依賴。

<dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><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</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

2.2、配置文件的定位

配置中心有多個配置文件,我們需要一些主鍵來定位確定我們的項目使用哪個配置文件。

配置文件的主鍵由namespacegroupspring.profiles.activespring.application.namespring.cloud.nacos.config.file-extension組成,其中spring.profiles.activespring.application.namespring.cloud.nacos.config.file-extension這三個組成一個叫dataId的東西。

  • namespace和注冊中心的意義相同。它通常代表著一個環境,所有的東西都要裝進一個namespace里面。默認使用叫public的命名空間,可以用spring.cloud.nacos.config.namespace指定。
  • group也是和注冊中心的意義相同,它通常代表一個業務,比如order-group。默認是DEFAULT_GROUP,可以用spring.cloud.nacos.config.group指定,要注意的是指定的是命名空間的id而不是name。
  • spring.profiles.activespring.application.name,Spring項目的配置。
  • spring.cloud.nacos.config.file-extension,表示配置文件的后綴名。
  • dataId,由spring.profiles.activespring.application.namespring.cloud.nacos.config.file-extension三者組成,需要在配置中心填寫。組成規則是${spring.application.name}-${spring.profiles.active}.${file-extension}。比如說applicationNamenacos-config-clientprofiledevfile-extensionyaml,那么dataId就是nacos-config-client-dev.yaml

2.3、bootstrap.yml

我們需要配置關于配置中心的內容,比如配置中心的地址,配置中心的配置文件的后綴名等等。

所以關于配置中心的配置需要在項目啟動前加載。而bootstrap.ymlapplication.ylm之前加載,所以關于配置中心的配置我們都會選擇放在bootstrap.yml中。

前面的配置是項目作為Nacos的Client需要配置的。只有在spring.cloud.nacos.config才是關于配置中心的。該例子中設置了配置中心的地址是localhost:8848,拉取后綴名是yaml的文件。

# nacos配置
server:port: 3377spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服務注冊中心地址config:server-addr: localhost:8848 #Nacos作為配置中心地址file-extension: yaml #指定yaml格式的配置# group: DEFAULT_GROUP 默認值,不寫默認是DEFAULT_GROUP

這里或許會有些奇怪,配置中心那么多配置文件,不需要指定配置文件名可以獲取到我們想要的那個文件嗎?這里是涉及到dataId的命名規則,在后續會講到。


application.yml的內容比較簡單,只是設置了當前的profile

spring:profiles:active: dev

2.4、配置中心新增配置

點擊Nacos管理頁面右上角的加號就可以新增配置。
在這里插入圖片描述
配置時有兩個值必填,一個是dataId,另一個是group。這兩個值相當于是該配置文件的主鍵。

dataId,它的值必須遵循一定的規則。

dataId必須是這樣的格式${spring.application.name}-${spring.profiles.active}.${file-extension}

在這里例子當中,spring.application.name=nacos-config-clientspringprofiles.active=devfile-extension=yaml

所以dataId必須是nacos-config-client-dev.yaml。只有這樣Nacos才知道當前新增的配置文件是屬于哪個Client的。

我們新增一個配置config.info=hello。具體截圖如下,必須注意,每個冒號后面都要接一個空格。

在這里插入圖片描述


group的默認值是DEFAULT_GROUP,我們在bootstrap.yml中不明確寫spring.cloud.nacos.config.group的值的話,那Spring項目默認是拉取group=DEFAULT_GROUP的配置文件


2.5、驗證

用下面的代碼驗證系統是否讀取到了配置中心的配置。

注意@RefreshScope這個注解,這個注解能讓我們一直獲取到最新的配置,并且不用重啟項目。

@RestController
@RefreshScope
public class ConfigController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo(){return configInfo;}
}

獲取config.info成功。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15707.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 遍歷字典的方法,你都掌握了嗎

Python中的字典是一種非常靈活的數據結構&#xff0c;它允許通過鍵來存儲和訪問值。在處理字典時&#xff0c;經常需要遍歷字典中的元素&#xff0c;以下是幾種常見的遍歷字典的方法。 1. 使用 for 循環直接遍歷字典的鍵 字典的鍵是唯一的&#xff0c;可以直接通過 for 循環來…

【Spring Security + OAuth2】OAuth2

Spring Security OAuth2 第一章 Spring Security 快速入門 第二章 Spring Security 自定義配置 第三章 Spring Security 前后端分離配置 第四章 Spring Security 身份認證 第五章 Spring Security 授權 第六章 OAuth2 文章目錄 Spring Security OAuth21、OAuth2簡介1.1、OAu…

call、apply和bind

call、apply和bind都是JavaScript中函數對象的方法&#xff0c;用于改變函數的this值。 call&#xff1a;call方法接收一個對象和一系列參數&#xff0c;并立即調用函數&#xff0c;將this值設置為提供的對象。例如&#xff1a; function greet(greeting, punctuation) {cons…

Linux驅動開發筆記(二) 基于字符設備驅動的I/O操作

文章目錄 前言一、設備驅動的作用與本質1. 驅動的作用2. 有無操作系統的區別 二、內存管理單元MMU三、相關函數1. ioremap( )2. iounmap( )3. class_create( )4. class_destroy( ) 四、GPIO的基本知識1. GPIO的寄存器進行讀寫操作流程2. 引腳復用2. 定義GPIO寄存器物理地址 五、…

【2024最新華為OD-C卷試題匯總】傳遞悄悄話的最長時間(100分) - 三語言AC題解(Python/Java/Cpp)

&#x1f36d; 大家好這里是清隆學長 &#xff0c;一枚熱愛算法的程序員 ? 本系列打算持續跟新華為OD-C卷的三語言AC題解 &#x1f4bb; ACM銀牌&#x1f948;| 多次AK大廠筆試 &#xff5c; 編程一對一輔導 &#x1f44f; 感謝大家的訂閱? 和 喜歡&#x1f497; 文章目錄 前…

東哥一句兄弟,你還當真了?

關注盧松松&#xff0c;會經常給你分享一些我的經驗和觀點。 你還真把自己當劉強東兄弟了?誰跟你是兄弟了?你在國外的房子又不給我住&#xff0c;你出去旅游也不帶上我!都成人年了&#xff0c;東哥一句客套話&#xff0c;別當真! 今天&#xff0c;東哥在高管會上直言&…

mysql內存結構

一&#xff1a;邏輯存儲結構&#xff1a;表空間->段->區->頁->行、 表空間&#xff1a;一個mysql實例對應多個表空間&#xff0c;用于存儲記錄&#xff0c;索引等數據。 段&#xff1a;分為數據段&#xff0c;索引段&#xff0c;回滾段。innoDB是索引組織表&…

215. 數組中的第K個最大元素(快速排序、堆排序)

根據這道題總結一下快速排序和堆排序&#xff0c;再根據這兩種方法寫這道題。 給定整數數組 nums 和整數 k&#xff0c;請返回數組中第 k 個最大的元素。 請注意&#xff0c;你需要找的是數組排序后的第 k 個最大的元素&#xff0c;而不是第 k 個不同的元素。 你必須設計并實…

qmt量化交易策略小白學習筆記第6期【qmt如何獲取股票歷史漲跌停價格】

qmt如何獲取股票歷史漲跌停價格 qmt更加詳細的教程方法&#xff0c;會持續慢慢梳理。 也可找尋博主的歷史文章&#xff0c;搜索關鍵詞查看解決方案 &#xff01; 感謝關注&#xff0c;需免費開通量化回測與咨詢實盤權限&#xff0c;可以和博主聯系&#xff01; 獲取股票歷史…

[數據結構] -- 單鏈表

&#x1f308; 個人主頁&#xff1a;白子寰 &#x1f525; 分類專欄&#xff1a;C打怪之路&#xff0c;python從入門到精通&#xff0c;數據結構&#xff0c;C語言&#xff0c;C語言題集&#x1f448; 希望得到您的訂閱和支持~ &#x1f4a1; 堅持創作博文(平均質量分82)&#…

c++編程14——STL(3)list

歡迎來到博主的專欄&#xff1a;c編程 博主ID&#xff1a;代碼小豪 文章目錄 list成員類型構造、析構、與賦值iterator元素訪問修改元素list的操作 list list的數據結構是一個鏈表&#xff0c;準確的說應該是一個雙向鏈表。這是一個雙向鏈表的節點結構&#xff1a; list的使用…

Vue學習筆記3——事件處理

事件處理 1、事件處理器&#xff08;1&#xff09;內聯事件處理器&#xff08;2&#xff09;方法事件處理器 2、事件參數3、事件修飾符 1、事件處理器 我們可以使用v-on 指令(簡寫為)來監聽DOM事件&#xff0c;并在事件觸發時執行對應的JavaScript。 用法: v-on:click"me…

JVM學習-執行引擎

執行引擎 執行引擎是Java虛擬機核心組成部分之一虛擬機是一個相對于物理機的概念&#xff0c;這兩種機器都有代碼執行能力&#xff0c;其區別是物理機的執行引擎是直接建立在處理器、緩存、指令集和操作系統層面上的&#xff0c;而虛擬機的執行引擎是由軟件自行實現的&#xf…

【算法】遞歸、搜索與回溯——簡介

簡介&#xff1a;遞歸、搜索與回溯&#xff0c;本節博客主要是簡單記錄一下關于“遞歸、搜索與回溯”的相關簡單概念&#xff0c;為后續算法做鋪墊。 目錄 1.遞歸1.1遞歸概念2.2遞歸意義2.3學習遞歸2.4寫遞歸代碼步驟 2.搜索3.回溯與剪枝 遞歸、搜索、回溯的關系&#xff1a; …

ICML2024 定義新隱私保護升級:DP-BITFIT新型微調技術讓AI模型學習更安全

DeepVisionary 每日深度學習前沿科技推送&頂會論文分享&#xff0c;與你一起了解前沿深度學習信息&#xff01; 引言&#xff1a;差分隱私在大模型微調中的重要性和挑戰 在當今的深度學習領域&#xff0c;大型預訓練模型的微調已成為提高各種任務性能的關鍵技術。然而&am…

推特熱帖:大語言模型自薦能夠替代的20種人類工作!快來看你是否需要轉行!

最近推特上有一個例子引起了廣泛的討論&#xff0c;事情的起因是這樣的&#xff1a;網友讓 GPT-4o 預測一下自己未來將會替代人類哪些工作&#xff1f; 這聽起來很有趣&#xff01;GPT-4o會給出什么樣的預測呢&#xff1f; 3.5研究測試&#xff1a;hujiaoai.cn 4研究測試&…

02-Linux【基礎篇】

一、Linux的目錄結構 1.基本介紹 Linux的文件系統采用層級式的樹狀目錄結構&#xff0c;在此結構中的最上層是根目錄"/"&#xff0c;然后在此目錄下再創建其他的目錄 深刻理解Linux樹狀文件目錄是非常重要的 記住一句經典的話&#xff1a;在Linux世界里&#xff…

如何在 DigitalOcean Droplet 云主機上創建 Ubuntu 服務器

在本文中&#xff0c;你將通過 DigitalOcean 的管理面板創建一個 Ubuntu 服務器&#xff0c;并將其配置為使用你的 SSH 密鑰。設置好服務器后&#xff0c;你可以在其上部署應用程序和網站。 本教程是DigitalOcean云課程簡介的一部分&#xff0c;它指導用戶完成將應用程序安全地…

win10右鍵沒有默認打開方式的選項的處理方法

問題描述 搞了幾個PDF書籍學習一下&#xff0c;不過我不想用默認的WPS打開&#xff0c;因為WPS太惡心人了&#xff0c;占用資源又高。我下載了個Sumatra PDF&#xff0c;這時候我像更改pdf文件默認的打開程序&#xff0c;發現右擊沒有這個選項。 問題解決 右擊文件–屬性–…

汽車以太網發展現狀及挑戰

一、汽車以太網技術聯盟 目前推動汽車以太網技術應用與發展的組織包括&#xff1a;OPEN Alliance&#xff08;One-Pair Ether-Net Alliance SIG&#xff09;聯盟&#xff0c;主要致力于汽車以太網推廣與使用&#xff0c;該聯盟通過推進 BroadR- Reach 單對非屏蔽雙絞線以太網傳…