Spring Boot: проверка типов свойств конфигурации, привязка конструктора
Пример из предыдущего поста может быть переписан неизменным образом, как показано в следующем примере:
package com.example;
import java.net.InetAddress;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConstructorBinding;
import org.springframework.boot.context.properties.DefaultValue;
@ConstructorBinding
@ConfigurationProperties("acme")
public class AcmeProperties {
private final boolean enabled;
private final InetAddress remoteAddress;
private final Security security;
public AcmeProperties(boolean enabled, InetAddress remoteAddress, Security security) {
this.enabled = enabled;
this.remoteAddress = remoteAddress;
this.security = security;
}
public boolean isEnabled() { ... }
public InetAddress getRemoteAddress() { ... }
public Security getSecurity() { ... }
public static class Security {
private final String username;
private final String password;
private final List
В этой настройке аннотация @ConstructorBinding используется, чтобы указать, что следует использовать привязку конструктора. Это означает, что связыватель ожидает найти конструктор с параметрами, которые вы хотите связать.
Вложенные члены класса @ConstructorBinding (например, Security в приведенном выше примере) также будут связаны через их конструктор.
Значения по умолчанию можно указать с помощью @DefaultValue, и будет применена та же служба преобразования, чтобы привести значение String к целевому типу отсутствующего свойства.
Чтобы использовать привязку конструктора, класс должен быть включен с помощью @EnableConfigurationProperties или сканирования свойств конфигурации. Вы не можете использовать связывание конструктора с bean-компонентами, которые создаются обычными механизмами Spring (например, bean-компоненты @Component, bean-компоненты, созданные с помощью методов @Bean, или bean-компоненты, загружаемые с помощью @Import)
Если у вас есть более одного конструктора для вашего класса, вы также можете использовать @ConstructorBinding непосредственно на конструкторе, который должен быть связан.
Читайте также:
- Spring Boot: внешняя конфигурация
- Spring Boot: конфигурация, файлы свойств приложения
- Spring Boot: проверка типов свойств конфигурации, связывание свойств JavaBean
Комментарии
Отправить комментарий