YAML 中定義 List 的幾種方式

在 YAML 配置文件中定義 List 并在 Spring 應用中注入是非常常見的操作,下面詳細介紹具體寫法和注入方式。

一、YAML 中定義 List 的幾種方式

1. 縮進式寫法(推薦)

最常用的方式,通過短橫線?-?加空格表示列表項:

yaml

# application.yml
my:# 基本類型List   這種寫法 要注意-后面不能有空格stringList:-蘋果-香蕉-橙子# 數字類型List   這種寫法 要注意-后面不能有空格numberList:-10-20-30# 對象類型ListuserList:-name: 張三age: 25-name: 李四age: 30-name: 王五age: 35
2. 行內式寫法(緊湊格式)

逗號分隔列表項:

yaml

# 行內式寫法
my:stringList: 蘋果, 香蕉, 橙子numberList: 10, 20, 30# 對象列表行內式userList: [{name: 張三, age: 25}, {name: 李四, age: 30}]
3. 混合寫法

根據場景靈活組合:

yaml

my:mixedList:- 基礎值- {key: value}  # 行內對象- name: 測試value: 123    # 縮進對象

二、在 Spring 中注入 List 的方法

假設我們有如下配置類和實體類用于接收注入:

1. 實體類定義(用于對象列表)

java

運行

@Data
public class User {private String name;private Integer age;
}
2. 注入方式一:@Value 注解(適合簡單類型)

java

運行

@Component
public class ListConfig {// 注入字符串列表@Value("${my.stringList}")private List<String> stringList;// 注入數字列表@Value("${my.numberList}")private List<Integer> numberList;// 打印列表內容public void printLists() {System.out.println("字符串列表: " + stringList);System.out.println("數字列表: " + numberList);}
}
3. 注入方式二:@ConfigurationProperties(適合復雜類型)

更推薦的方式,支持對象列表和類型轉換:

java

運行

@Component
@ConfigurationProperties(prefix = "my")  // 綁定前綴
@Data
public class MyConfig {private List<String> stringList;private List<Integer> numberList;private List<User> userList;  // 對象類型列表
}
4. 使用注入的 List

java

運行

@SpringBootApplication
public class ListDemoApplication implements CommandLineRunner {@Autowiredprivate MyConfig myConfig;  // 注入配置類@Autowiredprivate ListConfig listConfig;  // 注入@Value配置public static void main(String[] args) {SpringApplication.run(ListDemoApplication.class, args);}@Overridepublic void run(String... args) {// 打印@ConfigurationProperties注入的列表System.out.println("用戶列表: " + myConfig.getUserList());// 打印@Value注入的列表listConfig.printLists();}
}

三、注意事項

  1. 配置前綴匹配

    • @ConfigurationProperties 的 prefix 要與 yaml 中的父節點完全匹配
    • 字段名要與 yaml 中的子節點名稱一致(支持駝峰命名轉換)
  2. 依賴添加
    如果使用 @ConfigurationProperties,需要在 pom.xml 中添加依賴(Spring Boot 項目):

    xml

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
    </dependency>
    

  3. 類型轉換
    Spring 會自動進行類型轉換,如字符串轉數字、日期等,但要確保格式正確

  4. 默認值設置
    可以通過@Value("${my.list:默認值1,默認值2}")或在配置類中直接初始化設置默認值

通過以上方式,就可以在 YAML 中靈活定義各種類型的 List,并在 Spring 應用中方便地注入和使用了。

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

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

相關文章

C# 反射和特性(自定義特性)

自定義特性 你或許已經注意到了&#xff0c;應用特性的語法和之前見過的其他語法有很大不同。你可能會覺得特 性是一種完全不同的結構類型&#xff0c;其實不是&#xff0c;特性只是一種特殊的類。 有關特性類的一些要點如下。 用戶自定義的特性類叫作自定義特性。所有特性類都…

科目二的四個電路

一.K21電動機單連續運轉接線(帶點動控制)1.電路圖2.主線路這可很明了,是一條直線,從上接到下就OK了,然后從熱繼電器出來,接到SB3按鈕的常閉觸點上接著往下走一端接到SB2的常閉觸點上,接著往下走&#xff0c;走到接觸器的線圈上,從L2借一條火線出來,從熔斷器的上端接入,另一端接…

【位運算】查詢子數組最大異或值|2693

本文涉及知識點 位運算、狀態壓縮、枚舉子集匯總 3277. 查詢子數組最大異或值 給你一個由 n 個整數組成的數組 nums&#xff0c;以及一個大小為 q 的二維整數數組 queries&#xff0c;其中 queries[i] [li, ri]。 對于每一個查詢&#xff0c;你需要找出 nums[li…ri] 中任…

HTML DOM 方法

HTML DOM 方法 引言 HTML DOM&#xff08;文檔對象模型&#xff09;是HTML文檔的編程接口&#xff0c;它允許開發者通過JavaScript來操作HTML文檔中的元素。DOM 方法是DOM編程的核心&#xff0c;它提供了豐富的操作手段來改變網頁的結構、樣式和行為。本文將詳細介紹HTML DOM中…

w嵌入式分享合集68

自己的原文哦~ https://blog.51cto.com/whaosoft/14133002 一、一鍵開關機電路的設計方案 方案一&#xff1a;電路圖 一鍵開關機電路分析如下&#xff1a; 電路工作流程如下&#xff1a; Key按下瞬間&#xff0c;Q2、Q1導通&#xff0c;7805輸入電壓在8.9V左右&…

FFmpeg QoS 處理

FFmpeg 中的 QoS (服務質量) 處理主要關注于實時流媒體傳輸中的時序控制、丟幀策略和網絡適應等方面。以下是 FFmpeg 中 QoS 相關的關鍵機制和配置方法。1. 基本 QoS 機制丟幀策略 (Frame Dropping)cAVDictionary *options NULL; av_dict_set(&options, "framedrop&q…

TexStudio中的Latex,PDFLatex,XeLatex和LuaLatex的區別

多種LaTeX編譯器一、多種LaTeX編譯器 1.1 PDFLaTeX&#xff08;1994年&#xff09; 默認、最常用的引擎。 輸入文件通常是 ASCII 或 UTF-8 編碼&#xff08;但中文需要 CJK 宏包或 ctex 宏包支持&#xff09;。 字體選擇受限&#xff1a;只能使用 TeX 自帶的字體或者 Type 1…

容器化部署:用Docker封裝機器翻譯模型與服務詳解

文章目錄一、機器翻譯容器化的技術棧選型1.1 為什么需要容器化MT模型&#xff1f;1.2 基礎鏡像選擇對比1.3 典型依賴分層方案1.4 性能對比&#xff08;容器化 vs 原生部署&#xff09;二、關鍵部署模式2.1 輕量級API服務封裝2.2 模型熱更新策略三、Docker鏡像構建3.1 編寫Docke…

leetcode_42 接雨水

1. 題意 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖&#xff0c;計算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 2. 題解 這個題不會做&#xff0c;全部是看得題解捏。 不過能看懂題解感覺自己也很棒了&#xff01; 看完題解后感覺最難的是如何求出有多少…

Spring Boot 整合 Thymeleaf 模板引擎:從零開始的完整指南

引言&#xff1a;為什么選擇 Thymeleaf&#xff1f; Thymeleaf 是一個現代化的服務器端 Java 模板引擎&#xff0c;專為 Web 開發而設計。與 JSP 不同&#xff0c;Thymeleaf 模板是純 HTML 文件&#xff0c;可以直接在瀏覽器中預覽&#xff0c;無需后端服務器支持。這種"…

pytest介紹(python測試框架)(@pytest.mark.parametrize、@pytest.fixtures)

文章目錄**1. 核心特點**- **簡潔易用**&#xff1a;無需復雜的配置&#xff0c;只需編寫簡單的函數或類即可進行測試。- **豐富的斷言**&#xff1a;直接使用 Python 內置的 assert 語句&#xff0c;失敗時提供詳細的錯誤信息。- **自動發現測試**&#xff1a;通過約定的命名規…

[Python 基礎課程]繼承

在 Python 的面向對象編程&#xff08;OOP&#xff09;中&#xff0c;繼承&#xff08;Inheritance&#xff09; 是一種重要的機制&#xff0c;它允許一個類&#xff08;稱為子類或派生類&#xff09;從另一個類&#xff08;稱為父類、基類或超類&#xff09;中繼承屬性和方法。…

QT之設計器組件功能(8大類55個組件)

組件名稱 功能描述關鍵屬性1. Layouts&#xff08;布局組件&#xff09;(1) Vertical Layout&#xff08;垂直布局&#xff09;將子控件按垂直方向依次排列layoutSpacing&#xff1a;控件之間的間距layoutMargin&#xff1a;布局邊緣的邊距layoutStretch&#xff1a;設置各控件…

java中list的api詳細使用

在Java中&#xff0c;List是集合框架中最常用的接口之一&#xff0c;繼承自Collection&#xff0c;代表有序、可重復的元素集合&#xff08;允許null元素&#xff09;。其核心實現類有ArrayList&#xff08;數組實現&#xff0c;隨機訪問高效&#xff09;、LinkedList&#xff…

Azure AI Search 探索總結

Azure AI Search 原名 Azure Cognitive Service&#xff0c;是Azure中用來給AI項目構建知識庫的組件。知識庫本質和數據庫很像&#xff0c;但是內部的存儲結構和檢索算法不一樣。比如并不是知識庫的每一列都可以用來過濾、檢索或group by&#xff0c;而是要根據實際情況配置。A…

高效解決 pip install 報錯 SSLError: EOF occurred in violation of protocol

高效解決 pip install 報錯 SSLError: EOF occurred in violation of protocol 標簽&#xff1a; Python, pip, SSLError, Clash, 網絡代理, 問題解決 一、問題描述 在Python開發中&#xff0c;pip 是我們最親密的伙伴。然而&#xff0c;當你身處需要科學上網的環境&#xff0c…

CSS 核心知識點全解析:從基礎到實戰應用

大家好&#xff01;今天這篇文章將系統總結 CSS 的核心知識點&#xff0c;從最基礎的樣式引入到復雜的選擇器應用&#xff0c;再到盒子模型、文本處理等實戰技巧&#xff0c;全程結合代碼示例&#xff0c;讓你輕松掌握 CSS 的精髓。一、CSS 是什么&#xff1f;為什么需要它&…

ClickHouse的學習與了解

什么是ClickHouse&#xff1f; ClickHouse是一個用于聯機分析(OLAP)的列式數據庫管理系統(DBMS)。 在傳統的行式數據庫系統中&#xff0c;數據按如下順序存儲&#xff1a;RowWatchIDJavaEnableTitleGoodEventEventTime#0893543506621Investor Relations12016/5/18 5:19#1903295…

安卓11 12系統修改定制化_____修改系統 解鎖system分區 去除data加密 自由刪減系統應用

在定制化系統中。修改系統分區 解鎖system。讓用戶可以自由刪減應用。這個在定制化服務中比較常見。對于此項修改服務。需要我們了解基礎的分區常識以及常用的幾種基礎修改步驟。 通過博文了解?????? 1??????-----修改rom 解鎖 system 分區有什么意義 2????…

JetPack系列教程(八):PDF庫——讓Android應用也能優雅“翻頁”

JetPack系列教程&#xff08;八&#xff09;&#xff1a;PDF庫——讓Android應用也能優雅“翻頁” 在Android開發的世界里&#xff0c;加載PDF文件一直是個讓人又愛又恨的“小妖精”。愛它&#xff0c;因為PDF是文檔界的“萬能鑰匙”&#xff1b;恨它&#xff0c;因為原生Andr…