1. Обзор
В этом руководстве мы рассмотрим, как мы можем использовать свойства, определенные в файле YAML, для настройки значений для карты
в наших классах POJO.
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
со значением префикса
. Мы определим наше сопоставление с тем же корневым значением в нашем файле YAML, как мы увидим в следующем разделе.
Нам также нужно не забыть включить свойства конфигурации со следующей аннотацией в нашем Application.class
:
@EnableConfigurationProperties(TshirtSizeConfig.class)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2.2. Конфигурация YAML
Теперь добавим
t-shirt-size
в нашу конфигурацию YAML.
Мы можем использовать следующую структуру в нашем файле 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.
Код для этой статьи доступен на GitHub .