产品有些功能在有些客户不需要开启,而这些功能又是初始化的,删除掉还会报错,springboot有个注解@ConditionalOnProperty
可以使这些类失效,初始化会报错但是不影响项目运行
yml配置文件里有个启用标识
# 启用ES:true/false
es_use_flag: false
es配置类中添加注解@ConditionalOnProperty(name = "es_use_flag", havingValue = "true")
意思就是当es_use_flag这个为true的时候,下面的类虽然报错但是不会影响整体的运行
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
@ConditionalOnProperty(name = "es_use_flag", havingValue = "true")
@Configuration
@Slf4j
public class ESRestClientConfig extends AbstractElasticsearchConfiguration {
@Value("${es_connect_url}")
private String esConnectUrl;
@Override
@Bean
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo(esConnectUrl)
.build();
return RestClients.create(clientConfiguration).rest();
}
}