簡體   English   中英

Spring Boot-在不刪除代碼或不更改POM的情況下禁用嵌入式ElasticSearch

[英]Spring Boot - Disable embedded ElasticSearch without removing code or changing POM

我正在尋找一種方法來防止ElasticSearch在Spring Boot項目中啟動(嵌入式或單獨的服務器)。 ES當前未使用,但將在項目的后期使用。

如果我從POM中刪除這些行,則我的代碼需要進行重大更新,因為無法再找到ES的所有注釋。

有什么方法可以使我的項目保持完整,但是可以阻止ES啟動(嵌入)?

我的目標是暫時不使用ES時加快重啟速度。

或者,當然,我也可以將ES作為單獨的服務器運行,但是我不想浪費時間。

謝謝

將以下exclude添加到您的@SpringBootApplication

import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration;

@SpringBootApplication(exclude = ElasticsearchAutoConfiguration.class)

在您本地的application.properties

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration

在生產中覆蓋以強制連接

spring.data.elasticsearch.cluster-nodes = someip:9300
spring.autoconfigure.exclude = none

您將需要使ElasticsearchTemplate @Lazy或將其放在@Profile("production")類下的概率

如果您使用的是Java High Level REST Client,則解決方案如下:

@EnableAutoConfiguration(exclude = RestClientAutoConfiguration.class

我發現這種方法可以在Spring Boot中禁用/啟用Elasticsearch

在application.properties中:

elastic_enable=false

在彈性配置文件中:

@Value("${elastic_enable}") boolean elastic_enable;

@Bean public Client a() throws UnknownHostException {
    if (elastic_enable) 
        return TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(elastic_host), 9300));
    else 
        return TransportClient.builder().build();
}

您應該排除這兩個Spring Boot Auto Configurations:

ElasticsearchAutoConfiguration.class, ElasticsearchDataAutoConfiguration.class

另外,如果您的Elastic擁有@Configuration類,或者ElasticsearchTemplate @Bean ,請確保將其注釋掉。

通過在我的@SpringBootApplication中添加以下排除,我剛剛在Spring Boot 1.5.8中禁用了嵌入式Elasticsearch。

希望這會有所幫助。

import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration;
import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration;
import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration;

@SpringBootApplication(exclude = {ElasticsearchAutoConfiguration.class,ElasticsearchDataAutoConfiguration.class, ElasticsearchRepositoriesAutoConfiguration.class})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM