Spring Boot: конфигурация, проверка @ConfigurationProperties

Spring Boot пытается проверять классы @ConfigurationProperties всякий раз, когда они аннотируются аннотацией Spring @Validated. Вы можете использовать аннотации ограничений JSR-303 javax.validation непосредственно в своем классе конфигурации. Для этого убедитесь, что совместимая реализация JSR-303 находится в вашем пути к классам, а затем добавьте аннотации ограничений к вашим полям, как показано в следующем примере:

@ConfigurationProperties(prefix="acme")
@Validated
public class AcmeProperties {

    @NotNull
    private InetAddress remoteAddress;

    // ... getters и setters

}

Вы также можете запустить проверку, добавив аннотацию к методу @Bean, который создает свойства конфигурации с помощью @Validated.

Чтобы гарантировать, что проверка всегда запускается для вложенных свойств, даже если свойства не найдены, соответствующее поле должно быть аннотировано @Valid. Следующий пример основан на предыдущем примере AcmeProperties:

@ConfigurationProperties(prefix="acme")
@Validated
public class AcmeProperties {

    @NotNull
    private InetAddress remoteAddress;

    @Valid
    private final Security security = new Security();

    // ... getters и setters

    public static class Security {

        @NotEmpty
        public String username;

        // ... getters и setters

    }

}

Вы также можете добавить собственный Spring Validator, создав определение компонента с именем configurationPropertiesValidator. Метод @Bean должен быть объявлен как статический. Валидатор свойств конфигурации создается очень рано в жизненном цикле приложения, и объявление метода @Bean как статического позволяет создавать bean без необходимости создания экземпляра класса @Configuration. Это позволяет избежать проблем, которые могут быть вызваны ранним созданием экземпляра.

Модуль spring-boot-actuator включает в себя конечную точку, которая предоставляет все bean-компоненты @ConfigurationProperties. Укажите в веб-браузере

/actuator/configprops
или используйте эквивалентную конечную точку JMX.


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


Комментарии

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

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

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

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