Консул конфигурация по условному свойству пружинной загрузки - PullRequest
0 голосов
/ 02 июля 2018

Как мне написать консул класс конфигурации на условном свойстве, которое я сделал и протестировал со свойствами,

Но вы хотите написать класс конфигурации, и эта конфигурация должна быть загружена при условии.

1 Ответ

0 голосов
/ 02 июля 2018

Если я правильно понял ваш вопрос, вы хотите создать класс конфигурации, но загружать эту конфигурацию только при соблюдении какого-либо условия:

@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 {

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