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

Конфигурация пружинного ЯМЛА

Узнайте, как настроить приложение Spring с помощью файла YAML.

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

1. Обзор

Одним из способов настройки приложений Spring является использование файлов конфигурации YAML.

В этой краткой статье мы настроим различные профили для простого приложения Spring Boot с использованием YAML.

Дальнейшее чтение:

Краткое руководство по Spring @Value

Использование Spring @Value по умолчанию

Как ввести значение свойства В класс, Не Управляемый Spring?

2. Весенний файл YAML

Профили пружин помогают приложениям Spring определять различные свойства для различных сред.

Ниже приведен простой файл YAML, содержащий два профиля. Три тире, разделяющие два профиля, указывают на начало нового документа, поэтому все профили могут быть описаны в одном файле YAML.

Относительный путь к файлу application.yml – это /MyApplication/src/main/resources/application.yml:

spring:
    config:
        activate:
            on-profile: test
name: test-YAML
environment: testing
enabled: false
servers: 
    - www.abc.test.com
    - www.xyz.test.com

---
spring:
    config:
        activate:
            on-profile: prod
name: prod-YAML
environment: production
enabled: true
servers: 
    - www.abc.com
    - www.xyz.com

Обратите внимание, что эта настройка не подразумевает, что какой-либо из этих профилей будет активен при запуске нашего приложения, свойства, определенные в документах, относящихся к профилю, не будут загружены, если мы явно не укажем это; по умолчанию единственным активным профилем будет ” default “.

3. Привязка YAML к классу конфигурации

Чтобы загрузить набор связанных свойств из файла свойств, мы создадим класс bean:

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class YAMLConfig {
 
    private String name;
    private String environment;
    private boolean enabled;
    private List servers = new ArrayList<>();

    // standard getters and setters

}

Здесь используются следующие аннотации:

  • @Configuration помечает класс как источник определений компонентов
  • @ConfigurationProperties привязывает и проверяет внешние конфигурации к классу конфигурации
  • @EnableConfigurationProperties эта аннотация используется для включения @ConfigurationProperties аннотированных компонентов в приложении Spring

4. Доступ к свойствам YAML

Чтобы получить доступ к свойствам YAML, мы создаем объект класса YAML Config и получаем доступ к свойствам с помощью этого объекта.

В файле свойств давайте установим переменную среды spring.profiles.active в prod . Если мы не определим это свойство , будет активен только профиль по умолчанию|/.

Относительный путь к файлу свойств – /MyApplication/src/main/resources/application.properties.

spring.profiles.active=prod

В этом примере мы показываем свойства с помощью CommandLineRunner.

@SpringBootApplication
public class MyApplication implements CommandLineRunner {

    @Autowired
    private YAMLConfig myConfig;

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApplication.class);
        app.run();
    }

    public void run(String... args) throws Exception {
        System.out.println("using environment: " + myConfig.getEnvironment());
        System.out.println("name: " + myConfig.getName());
        System.out.println("enabled:" + myConfig.isEnabled());
        System.out.println("servers: " + myConfig.getServers());
    }
}

Вывод в командной строке:

using environment: production
name: prod-YAML
enabled: true
servers: [www.abc.com, www.xyz.com]

5. Переопределение свойства YAML

В Spring Boot файлы YAML могут быть переопределены другими файлами свойств YAML.

До версии 2.4.0 свойства YAML были переопределены файлами свойств в следующих расположениях в порядке наибольшего приоритета:

  • Свойства профилей, размещенных вне упакованной банки
  • Свойства профилей, упакованных в упакованную банку
  • Свойства приложения, размещенные вне упакованной банки
  • Свойства применения упакованные внутри упакованной банки

Начиная с Spring Boot 2.4, внешний файл всегда переопределяет упакованные файлы, независимо от того, является ли он специфичным для профиля или нет.

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

В этой краткой статье мы рассмотрели, как настроить свойства в приложениях Spring Boot с помощью YAML. Мы также видели правила переопределения свойств, которым следует Spring Boot для файлов YAML.

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