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 servers = new ArrayList();

    public List getServers() {
        return this.servers;
    }
}

Представление YAML как свойств в среде Spring

Класс YamlPropertySourceLoader может использоваться для представления YAML в качестве PropertySource в Spring Environment. Это позволяет использовать аннотацию @Value с синтаксисом заполнителей для доступа к свойствам YAML.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки