Конфигурация Spring YAML

Конфигурация Spring YAML

1. обзор

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

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

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

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

Научитесь использовать аннотацию Spring @Value для настройки полей из файлов свойств, системных свойств и т. Д.

Read more

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

Краткое и практическое руководство по установке значений по умолчанию при использовании аннотации @Value в Spring.

Read more

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

Узнайте, как инициализировать значения свойств в классах Java без прямого использования механизма внедрения Spring.

Read more

2. Файл Spring YAML

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

Ниже приведен простой файл YAML, который содержит два профиля. The three dashes separating the two profiles indicate the start of a new document so all the profiles can be described in the same YAML file.с

Относительный путь к файлуapplication.yml -/myApplication/src/main/resources/application.yml.

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

spring:
    profiles: test
name: test-YAML
environment: test
servers:
    - www.abc.test.com
    - www.xyz.test.com

---
spring:
    profiles: prod
name: prod-YAML
environment: production
servers:
    - www.abc.com
    - www.xyz.com

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

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

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class YAMLConfig {

    private String name;
    private String environment;
    private List servers = new ArrayList<>();

    // standard getters and setters

}

Аннотация, используемая здесь:

  • @Configuration отмечает класс как источник определений bean-компонентов

  • @ConfigurationProperties связывает и проверяет внешние конфигурации с классом конфигурации

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

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

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

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

Относительный путь к файлу свойств:/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("servers: " + myConfig.getServers());
    }
}

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

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

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

В Spring Boot файлы YAML могут быть переопределены другими файлами свойств YAML в зависимости от их расположения. Свойства YAML могут быть переопределены файлами свойств в следующих местах в порядке наивысшего приоритета:

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

  • Свойства профилей, упакованных внутри упакованной банки

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

  • Свойства приложения, упакованные внутри упакованной банки

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

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

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