Рубрики
Без рубрики

Как определить карту в YAML для POJO?

Мы рассмотрим, как мы можем использовать свойства, определенные в файле YAML, для настройки значений для карты в наших классах POJO.

Автор оригинала: Trixi Turny.

1. Обзор

В этом уроке мы рассмотрим, как мы можем использовать свойства, определенные в файле YAML, для настройки значений для Map в наших классах POJO.

2. POJO и YAML

Классы POJO – это простые старые объекты Java . YAML-это удобочитаемый формат структурированных данных, который использует отступы для обозначения вложенности.

2.1. Простой пример Карты

Давайте представим, что мы управляем интернет-магазином и создаем сервис, который переводит размеры одежды. Во-первых, мы продаем одежду только в Великобритании. Мы хотим знать, к какому размеру Великобритании относится этикетка “S”, “M”, “L” и так далее. Мы создаем наш класс конфигурации POJO:

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

    private Map simpleMapping;

    public TshirtSizeConfig(Map 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

Теперь мы добавляем размер футболки в нашу конфигурацию 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> complexMapping;

3. Заключение

В этой статье мы рассмотрели, как можно определить простые и более сложные вложенные карты в файле конфигурации YAML для простого POJO.

Код для этой статьи доступен на GitHub