Spring Boot: включение типов аннотированных @ConfigurationProperties
Spring Boot предоставляет инфраструктуру для связывания типов @ConfigurationProperties и регистрации их в виде bean-компонентов. Вы можете включить свойства конфигурации на индивидуальной основе или включить сканирование свойств конфигурации, которое работает аналогично сканированию компонентов.
Иногда классы, помеченные @ConfigurationProperties, могут не подходить для сканирования, например, если вы разрабатываете собственную автоконфигурацию или хотите включить их условно. В этих случаях укажите список типов для обработки с помощью аннотации @EnableConfigurationProperties. Это можно сделать для любого класса @Configuration, как показано в следующем примере:
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(AcmeProperties.class)
public class MyConfiguration {
}
Чтобы использовать сканирование свойств конфигурации, добавьте аннотацию @ConfigurationPropertiesScan в свое приложение. Как правило, она добавляется в основной класс приложения, аннотированный @SpringBootApplication, но ее можно добавить в любой класс @Configuration. По умолчанию сканирование происходит из пакета класса, который объявляет аннотацию. Если вы хотите определить конкретные пакеты для сканирования, вы можете сделать это, как показано в следующем примере:
@SpringBootApplication
@ConfigurationPropertiesScan({ "com.example.app", "org.acme.another" })
public class MyApplication {
}
Когда bean @ConfigurationProperties зарегистрирован с использованием сканирования свойств конфигурации или через @EnableConfigurationProperties, bean имеет условное имя: <prefix>-<fqn>, где <prefix> - префикс ключа среды, указанный в аннотации @ConfigurationProperties и <fqn> это полное имя bean. Если в аннотации не указан префикс, используется только полное имя bean-компонента.
Имя компонента в приведенном выше примере - acme-com.example.AcmeProperties.
Рекомендуется, чтобы @ConfigurationProperties работал только со средой и, в частности, не вставлял другие компоненты из контекста. В крайних случаях может использоваться установка сеттера или любого из *Aware интерфейсов, предоставляемых фреймворком (например, EnvironmentAware, если вам нужен доступ к Environment). Если вы все еще хотите внедрить другие bean-компоненты с помощью конструктора, bean-компонент свойств конфигурации должен быть аннотирован @Component и использовать привязку свойств на основе JavaBean.
Читайте также:
- Spring Boot: конфигурация, файлы свойств приложения
- Spring Boot: проверка типов свойств конфигурации, связывание свойств JavaBean
- Spring Boot: проверка типов свойств конфигурации, привязка конструктора
Комментарии
Отправить комментарий