Если я правильно понял ваш вопрос, вы хотите создать класс конфигурации, но загружать эту конфигурацию только при соблюдении какого-либо условия:
@Configuration
public class MyConfiguration {
@Bean
public ??? myBean() {
....
}
}
В этом случае вы должны использовать аннотацию @Conditional
, которая была впервые поставлена с Spring 4.
Существует множество @Conditional
подобных аннотаций, вам нужно просто посмотреть ту, которая вам нужна.
- @ ConditionalOnClass
- @ ConditionalOnProperty
- @ ConditionalOnMissingProperty
- @ ConditionalOnWebApplication
- @ ConditionalOnBean
- @ ConditionalOnMissingBean
- @ ConditionalOnClass
- .... (есть другие, вероятно)
Если этого недостаточно, вы даже можете использовать свою собственную условную логику. Поскольку это не было задано непосредственно в вопросе, я просто предоставлю ссылку (одна из многих) article , которая показывает, как это сделать.
Так что вы можете пойти, например:
@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
мет.
* * Пример тысячу сорок четыре: * * 1045
@Configuration
@ConditionalOnProperty(value="tools.consul.enabled", havingValue=true)
@PropertySources({
@PropertySource("classpath:consul-integration.properties)
})
public class ToolConsulSampleConfiguration {
}