Как я могу написать класс конфигурации consul для условного свойства, которое я сделал и протестировал со свойствами,
Но вы хотите написать класс конфигурации, и эта конфигурация должна быть загружена при условии.
Как я могу написать класс конфигурации consul для условного свойства, которое я сделал и протестировал со свойствами,
Но вы хотите написать класс конфигурации, и эта конфигурация должна быть загружена при условии.
Если я правильно понял ваш вопрос, вы хотите создать класс конфигурации, но загрузить эту конфигурацию, только если выполняется какое-то условие:
@Configuration
public class MyConfiguration {
@Bean
public ??? myBean() {
....
}
}
В этом случае вы должны использовать аннотацию @Conditional
, которая впервые появилась в Spring 4.
Есть много @Conditional
-подобных аннотаций, вы должны просто посмотреть ту, которая вам нужна.
Если этого недостаточно, вы можете даже свернуть свою собственную условную логику. Поскольку это не было задано напрямую в вопросе, я просто предоставлю ссылку (одну из многих) статьи, которые показывают, как это сделать.
Итак, вы можете пойти, например:
@Configuration
@ConditionalOnProperty(value="my.consul.integration.enabled", havingValue = "true")
public class MyConfiguration {
@Bean
public ??? myBean() {
....
}
}
Вы также можете поместить условную логику на уровне детализации одного компонента.
Здесь требование запуска конфигурации консула только в том случае, если включено определенное свойство (tools.consul.enabled=true
из ваших комментариев)
Идея состоит в том, чтобы определить набор свойств, связанных с консулом, не в файле application.yml
по умолчанию, а где-то еще, например, в файле consul-integration.properties
, и прочитать этот файл с конфигурацией, которая включается только при соблюдении @ConditionOnProperty
.
Пример:
@Configuration
@ConditionalOnProperty(value="tools.consul.enabled", havingValue=true)
@PropertySources({
@PropertySource("classpath:consul-integration.properties)
})
public class ToolConsulSampleConfiguration {
}