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 MapsimpleMapping; 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