Программно активировать @EnableConfigurationProperties из ApplicationContextRunner - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу использовать 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, но я не хочу вручную загружать весь список свойств вручную.

1 Ответ

0 голосов
/ 03 февраля 2020

Окончательно решено:

 .withUserConfiguration(SomeConfig.class, ConfigurationPropertiesAutoConfiguration.class);

Это всегда классы автоконфигурации, делающие магов c, мой плохой забыл это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...