Spring Boot: конфигурация, использование YAML вместо свойств
Использование YAML вместо свойств
YAML представляет собой расширенный набор JSON и, как таковой, является удобным форматом для указания данных иерархической конфигурации. Класс SpringApplication автоматически поддерживает YAML в качестве альтернативы свойствам, когда у вас есть библиотека SnakeYAML в вашем пути к классам (classpath).
Если вы используете «Starters», SnakeYAML автоматически предоставляется spring-boot-starter.
Загрузка YAML
Spring Framework предоставляет два удобных класса, которые можно использовать для загрузки документов YAML. YamlPropertiesFactoryBean загружает YAML в качестве свойств, а YamlMapFactoryBean загружает YAML в качестве карты.
Например, рассмотрим следующий документ YAML:
environments:
dev:
url: https://dev.example.com
name: Developer Setup
prod:
url: https://another.example.com
name: My Cool App
Предыдущий пример будет преобразован в следующие свойства:
environments.dev.url=https://dev.example.com
environments.dev.name=Developer Setup
environments.prod.url=https://another.example.com
environments.prod.name=My Cool App
Списки YAML представлены в виде ключей свойств с разыменованием [index]. Например, рассмотрим следующий YAML:
my:
servers:
- dev.example.com
- another.example.com
Предыдущий пример будет преобразован в эти свойства:
my.servers[0]=dev.example.com
my.servers[1]=another.example.com
Для привязки к таким свойствам с помощью утилит Binder Spring Boot (что и делает @ConfigurationProperties), вам нужно иметь свойство в целевом bean-компоненте типа java.util.List (или Set) и вам нужно либо предоставить установщик или инициализируйте его изменяемым значением. Например, следующий пример привязывает к свойствам, показанным ранее:
@ConfigurationProperties(prefix="my")
public class Config {
private List
Представление YAML как свойств в среде Spring
Класс YamlPropertySourceLoader может использоваться для представления YAML в качестве PropertySource в Spring Environment. Это позволяет использовать аннотацию @Value с синтаксисом заполнителей для доступа к свойствам YAML.
Читайте также:
- Spring Boot: внешняя конфигурация
- Spring Boot: конфигурация, файлы свойств приложения
- Spring Boot: конфигурация, заполнители в свойствах, шифрование свойств
Комментарии
Отправить комментарий