Я хочу использовать ApplicationContextRunner
для утверждений о существовании бинов на основе @ConditionalProperty
Я попал в SomeConfig
. Проблема в том, что SomeProperties
больше не работает со всеми значениями prop как null, потому что свойства conf не активированы. Нет прямого доступа к EnableConfigurationPropertiesRegistrar
, что составляет @Import
с помощью аннотации @EnableConfigurationProperties
:
contextRunner = new ApplicationContextRunner().withInitializer(applicationContext -> applicationContext.getEnvironment().setActiveProfiles("test"))
.withInitializer(new ConfigFileApplicationContextInitializer())
.withBean(SomeProperties.class)
.withConfiguration(UserConfigurations.of(SomeConfig.class));
В блоке выше будет SomeProperties
содержимое реквизита как ноль во время выполнения.
Как я могу программно активировать свойства conf?
Мне нужно, чтобы блок верхнего кода делал точно так же, как:
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
@EnableConfigurationProperties
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class, classes = {SomeConfig.class, SomeProperties.class})
public class SomeTest
Я мог бы использовать withProperties
, но мои свойства @Validated
, поэтому они взорвутся, если я укажу только один для @ConditionalOnProperty
, но я не хочу вручную загружать весь список свойств вручную.