Spring Boot - 禁用嵌入式ElasticSearch,无需删除代码或更改POM

时间:2016-12-19 11:48:38

标签: java spring elasticsearch spring-boot

我正在寻找一种方法来防止ElasticSearch在Spring Boot项目中启动(嵌入式或单独的服务器)。 ES目前尚未投入使用,但将在项目的后期阶段使用。

如果从POM中删除行,我的代码需要进行重大更新,因为无法再找到ES的所有注释。

有没有办法让我的项目保持完整,但阻止ES启动(嵌入式)?

我的目标是在不使用ES的情况下暂时加快重启。

当然,我也可以将ES作为一个单独的服务器运行,但我不想花时间。

由于

6 个答案:

答案 0 :(得分:3)

将以下exclude添加到您的@SpringBootApplication

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

@SpringBootApplication(exclude = ElasticsearchAutoConfiguration.class)

答案 1 :(得分:1)

在您当地的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")

下的概率

答案 2 :(得分:0)

我发现这种方法可以在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();
}

答案 3 :(得分:0)

您应该排除这两个Spring Boot自动配置:

ElasticsearchAutoConfiguration.class, ElasticsearchDataAutoConfiguration.class

此外,如果您的弹性为@Configuration课程,@BeanElasticsearchTemplate,请务必将其评论。

答案 4 :(得分:0)

我刚刚在spring boot 1.5.8中禁用了嵌入式elasticsearch,方法是将以下排除添加到我的@SpringBootApplication中。

希望这可以提供帮助。

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})

答案 5 :(得分:0)

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

@EnableAutoConfiguration(exclude = RestClientAutoConfiguration.class