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 中定義簡單的和更復雜的嵌套映射。