Всем добрый вечер. У меня есть класс, предназначенный для привязки к свойствам. В классе с меткой @Configuration
я создаю этот объект bean-компонента, например:
// Into TargetConfiguration class
@Bean("someBeanName")
@ConfigurationProperties("some.path")
public beanProperties() {
return new BeanProperties();
}
Я хотел бы протестировать все функциональные возможности этой конфигурации, и для этого я создаю тестовый класс, например:
@WebFluxTest
@TestPropertySource("classpath:test.properties")
@ContextConfiguration(classes = {TargetConfiguration.class})
class Test {...}
Проблема в том, что BeanProperties
будет содержать пустые поля, но если я сделаю какое-то другое OtherBeanProperties
и зарегистрирую его через @EnableConfigurationProperties
в TargetConfiguration
, то оно будет нормально заполнено, но для BeanProperties
I не может этого сделать, поскольку этот компонент зависит от свойства в test.properties . Также, если я создам этот bean-компонент с помощью конфигурации @TestConfiguration
, он будет заполнен до ...
Любая помощь приветствуется.
UPD-1: первое предположение - я регистрирую некий класс, который расширяет BeanDefinitionRegistryPostProcessor
аннотацией @DependsOn
с именем RegistratorClass
. Я не знаю почему, но если я добавлю @DependsOn
в класс RegistratorClass
, мой BeanProperties
будет немедленно построен без привязки (и перейдя к другому методу, который хочет получить это BeanProperties
). Если я удалю эту аннотацию, RegistratorClass
инициализирует первую, а моя BeanProperties
будет нормально построена и привязана к свойствам.