知識庫 / Spring / Spring Boot RSS 訂閱

如何使用 YAML 定義 POJO 中的地圖?

Java Map,Spring Boot
HongKong
6
12:50 PM · Dec 06 ,2025

1. 概述

本教程將介紹如何使用 YAML 文件中定義的屬性來配置 POJO 類中的 Map 對象的值。

2. POJO 和 YAML

POJO 類是簡單的 Java 對象。YAML 是一種可讀性強的結構化數據格式,它使用縮進來表示嵌套。

2.1. 簡單 示例

假設我們正在運行一個在線商店,並創建一個將服裝尺碼翻譯的服務。我們最初只銷售英國服裝。我們想知道標籤“S”、“M”、“L”等表示的英國尺碼是多少。我們創建了 POJO 配置類:

@ConfigurationProperties(prefix = "t-shirt-size")
public class TshirtSizeConfig {

    private Map<String, Integer> simpleMapping;

    public TshirtSizeConfig(Map<String, Integer> simpleMapping) {
        this.simpleMapping = simpleMapping;
    }
    
    //getters and setters..
}

請注意以下內容中使用的 @ConfigurationProperties 以及 prefix 屬性值。 我們將在 YAML 文件中定義相同的根值,正如下一部分所示。

我們還需要記住,使用以下註解啓用配置屬性,在我們的 Application.class 中:

@EnableConfigurationProperties(TshirtSizeConfig.class)
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

2.2 YAML 配置

現在我們向我們的 YAML 配置中添加了 t-shirt-size

我們可以使用以下結構在我們的 application.yml 文件中:

t-shirt-size:
  simple-mapping:
    XS: 6
    S:  8
    M:  10
    L:  12
    XL: 14

注意縮進和空格。YAML 使用縮進來表示嵌套。推薦的語法是每個嵌套級別使用兩個空格。

注意我們使用 simple-mapping 帶有破折號,但我們的類屬性名稱是 simpleMapping。 YAML 中帶有破折號的屬性會自動轉換為代碼中的駝峯式命名。

2.3. 更復雜的地圖示例

在成功推出英國商店之後,我們現在需要考慮將尺寸翻譯成其他國家/地區的測量單位。例如,我們現在想知道標籤“S”在法國和美國分別代表哪個尺寸。我們需要在配置中添加額外的層級數據。

我們可以通過使用更復雜的映射來修改application.yml

t-shirt-size:
  complex-mapping:
    XS:
      uk: 6
      fr: 34
      us: 2
    S:
      uk: 8
      fr: 36
      us: 4
    M:
      uk: 10
      fr: 38
      us: 6
    L:
      uk: 12
      fr: 40
      us: 8
    XL:
      uk: 14
      fr: 42
      us: 10

我們的POJO中對應的字段將是一個映射的映射:

private Map<String, Map<String, Integer>> complexMapping;

3. 結論

在本文中,我們瞭解到如何在 YAML 配置文件的簡單 POJO 中定義簡單的和更復雜的嵌套映射。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.