From b780e5247c049902c5cda8b2c94dc74a69bb3984 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Mon, 13 Jan 2020 15:36:47 +0100 Subject: [PATCH] Remove support for Elasticsearch transport client The Elasticsearch transport client has been deprecated since Spring Boot 2.2.0 and is about to be removed from Spring Data Elasticsearch and Elasticsearch itself in their next major releases. The available REST client support variants are now the preferred way of using Elasticsearch features. Closes gh-19668 --- .../build.gradle | 4 +- ...entHealthContributorAutoConfiguration.java | 76 ------------- ...estHealthContributorAutoConfiguration.java | 4 +- ...estHealthContributorAutoConfiguration.java | 4 +- ...lasticsearchHealthIndicatorProperties.java | 68 ------------ .../main/resources/META-INF/spring.factories | 1 - .../SpringApplicationHierarchyTests.java | 32 +++--- ...althContributorAutoConfigurationTests.java | 18 +--- ...intsAutoConfigurationIntegrationTests.java | 3 +- .../spring-boot-autoconfigure/build.gradle | 4 +- .../ElasticsearchAutoConfiguration.java | 70 ------------ .../ElasticsearchDataAutoConfiguration.java | 9 +- .../ElasticsearchDataConfiguration.java | 21 ---- .../ElasticsearchProperties.java | 73 ------------- ...itional-spring-configuration-metadata.json | 24 ----- .../main/resources/META-INF/spring.factories | 1 - .../ElasticsearchAutoConfigurationTests.java | 102 ------------------ ...asticsearchDataAutoConfigurationTests.java | 53 +-------- ...rchRepositoriesAutoConfigurationTests.java | 5 +- .../docs/asciidoc/spring-boot-features.adoc | 4 +- .../build.gradle | 4 +- 21 files changed, 37 insertions(+), 543 deletions(-) delete mode 100644 spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchClientHealthContributorAutoConfiguration.java delete mode 100644 spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticsearchHealthIndicatorProperties.java delete mode 100644 spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfiguration.java delete mode 100644 spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchProperties.java delete mode 100644 spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfigurationTests.java diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle index 5c7076e9ef..7774ca099b 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -128,7 +128,9 @@ dependencies { testImplementation 'org.mockito:mockito-core' testImplementation 'org.skyscreamer:jsonassert' testImplementation 'org.springframework:spring-orm' - testImplementation 'org.springframework.data:spring-data-elasticsearch' + testImplementation ('org.springframework.data:spring-data-elasticsearch') { + exclude group: 'org.elasticsearch.client', module: 'transport' + } testImplementation 'org.springframework.data:spring-data-rest-webmvc' testImplementation 'org.springframework.integration:spring-integration-jmx' testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc' diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchClientHealthContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchClientHealthContributorAutoConfiguration.java deleted file mode 100644 index 8778925eab..0000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchClientHealthContributorAutoConfiguration.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.actuate.autoconfigure.elasticsearch; - -import java.time.Duration; -import java.util.Map; - -import org.elasticsearch.client.Client; - -import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthContributorConfiguration; -import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; -import org.springframework.boot.actuate.elasticsearch.ElasticsearchHealthIndicator; -import org.springframework.boot.actuate.health.HealthContributor; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * {@link EnableAutoConfiguration Auto-configuration} for - * {@link ElasticsearchHealthIndicator} using the Elasticsearch {@link Client}. - * - * @author Stephane Nicoll - * @since 2.1.0 - * @deprecated since 2.2.0 as {@literal org.elasticsearch.client:transport} has been - * deprecated upstream - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnClass(Client.class) -@ConditionalOnBean(Client.class) -@ConditionalOnEnabledHealthIndicator("elasticsearch") -@AutoConfigureAfter(ElasticsearchAutoConfiguration.class) -@EnableConfigurationProperties(ElasticsearchHealthIndicatorProperties.class) -@Deprecated -public class ElasticSearchClientHealthContributorAutoConfiguration - extends CompositeHealthContributorConfiguration { - - private final ElasticsearchHealthIndicatorProperties properties; - - public ElasticSearchClientHealthContributorAutoConfiguration(ElasticsearchHealthIndicatorProperties properties) { - this.properties = properties; - } - - @Bean - @ConditionalOnMissingBean(name = { "elasticsearchHealthIndicator", "elasticsearchHealthContributor" }) - public HealthContributor elasticsearchHealthContributor(Map clients) { - return createContributor(clients); - } - - @Override - protected ElasticsearchHealthIndicator createIndicator(Client client) { - Duration responseTimeout = this.properties.getResponseTimeout(); - return new ElasticsearchHealthIndicator(client, (responseTimeout != null) ? responseTimeout.toMillis() : 100, - this.properties.getIndices()); - } - -} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchJestHealthContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchJestHealthContributorAutoConfiguration.java index 62aa0a9e9f..36f898c2c6 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchJestHealthContributorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchJestHealthContributorAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,7 +45,7 @@ import org.springframework.context.annotation.Configuration; @ConditionalOnClass(JestClient.class) @ConditionalOnBean(JestClient.class) @ConditionalOnEnabledHealthIndicator("elasticsearch") -@AutoConfigureAfter({ JestAutoConfiguration.class, ElasticSearchClientHealthContributorAutoConfiguration.class }) +@AutoConfigureAfter(JestAutoConfiguration.class) @Deprecated public class ElasticSearchJestHealthContributorAutoConfiguration extends CompositeHealthContributorConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchRestHealthContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchRestHealthContributorAutoConfiguration.java index 2ce57ad27a..58cd0f27da 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchRestHealthContributorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticSearchRestHealthContributorAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,7 +44,7 @@ import org.springframework.context.annotation.Configuration; @ConditionalOnClass(RestClient.class) @ConditionalOnBean(RestClient.class) @ConditionalOnEnabledHealthIndicator("elasticsearch") -@AutoConfigureAfter({ RestClientAutoConfiguration.class, ElasticSearchClientHealthContributorAutoConfiguration.class }) +@AutoConfigureAfter(RestClientAutoConfiguration.class) @SuppressWarnings("deprecation") public class ElasticSearchRestHealthContributorAutoConfiguration extends CompositeHealthContributorConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticsearchHealthIndicatorProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticsearchHealthIndicatorProperties.java deleted file mode 100644 index 93863da4ab..0000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticsearchHealthIndicatorProperties.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.actuate.autoconfigure.elasticsearch; - -import java.time.Duration; -import java.util.ArrayList; -import java.util.List; - -import org.springframework.boot.actuate.elasticsearch.ElasticsearchHealthIndicator; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.DeprecatedConfigurationProperty; - -/** - * External configuration properties for {@link ElasticsearchHealthIndicator}. - * - * @author Binwei Yang - * @author Andy Wilkinson - * @since 2.0.0 - * @deprecated since 2.2.0 as {@literal org.elasticsearch.client:transport} has been - * deprecated upstream - */ -@ConfigurationProperties(prefix = "management.health.elasticsearch", ignoreUnknownFields = false) -@Deprecated -public class ElasticsearchHealthIndicatorProperties { - - /** - * Comma-separated index names. - */ - private List indices = new ArrayList<>(); - - /** - * Time to wait for a response from the cluster. - */ - private Duration responseTimeout = Duration.ofMillis(100); - - @DeprecatedConfigurationProperty(reason = "Upstream elasticsearch transport is deprected") - public List getIndices() { - return this.indices; - } - - public void setIndices(List indices) { - this.indices = indices; - } - - @DeprecatedConfigurationProperty(reason = "Upstream elasticsearch transport is deprected") - public Duration getResponseTimeout() { - return this.responseTimeout; - } - - public void setResponseTimeout(Duration responseTimeout) { - this.responseTimeout = responseTimeout; - } - -} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories index 43cbe4ceb5..644d060384 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories @@ -13,7 +13,6 @@ org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationP org.springframework.boot.actuate.autoconfigure.context.ShutdownEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseReactiveHealthContributorAutoConfiguration,\ -org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchClientHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchJestHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchRestHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration,\ diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java index cd2fc368e3..c7fdf0c932 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,29 +66,23 @@ class SpringApplicationHierarchyTests { } @Configuration - @EnableAutoConfiguration( - exclude = { ElasticsearchDataAutoConfiguration.class, ElasticsearchRepositoriesAutoConfiguration.class, - CassandraAutoConfiguration.class, CassandraDataAutoConfiguration.class, - MongoDataAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class, - Neo4jDataAutoConfiguration.class, Neo4jRepositoriesAutoConfiguration.class, - RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class, - FlywayAutoConfiguration.class, MetricsAutoConfiguration.class }, - excludeName = { - "org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration" }) + @EnableAutoConfiguration(exclude = { ElasticsearchDataAutoConfiguration.class, + ElasticsearchRepositoriesAutoConfiguration.class, CassandraAutoConfiguration.class, + CassandraDataAutoConfiguration.class, MongoDataAutoConfiguration.class, + MongoReactiveDataAutoConfiguration.class, Neo4jDataAutoConfiguration.class, + Neo4jRepositoriesAutoConfiguration.class, RedisAutoConfiguration.class, + RedisRepositoriesAutoConfiguration.class, FlywayAutoConfiguration.class, MetricsAutoConfiguration.class }) static class Parent { } @Configuration - @EnableAutoConfiguration( - exclude = { ElasticsearchDataAutoConfiguration.class, ElasticsearchRepositoriesAutoConfiguration.class, - CassandraAutoConfiguration.class, CassandraDataAutoConfiguration.class, - MongoDataAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class, - Neo4jDataAutoConfiguration.class, Neo4jRepositoriesAutoConfiguration.class, - RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class, - FlywayAutoConfiguration.class, MetricsAutoConfiguration.class }, - excludeName = { - "org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration" }) + @EnableAutoConfiguration(exclude = { ElasticsearchDataAutoConfiguration.class, + ElasticsearchRepositoriesAutoConfiguration.class, CassandraAutoConfiguration.class, + CassandraDataAutoConfiguration.class, MongoDataAutoConfiguration.class, + MongoReactiveDataAutoConfiguration.class, Neo4jDataAutoConfiguration.class, + Neo4jRepositoriesAutoConfiguration.class, RedisAutoConfiguration.class, + RedisRepositoriesAutoConfiguration.class, FlywayAutoConfiguration.class, MetricsAutoConfiguration.class }) static class Child { } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticsearchHealthContributorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticsearchHealthContributorAutoConfigurationTests.java index d7b7176c9a..eb5b988695 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticsearchHealthContributorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/elasticsearch/ElasticsearchHealthContributorAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,15 +23,13 @@ import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAu import org.springframework.boot.actuate.elasticsearch.ElasticsearchHealthIndicator; import org.springframework.boot.actuate.elasticsearch.ElasticsearchJestHealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; /** - * Tests for {@link ElasticSearchClientHealthContributorAutoConfiguration} and - * {@link ElasticSearchJestHealthContributorAutoConfiguration}. + * Tests for {@link ElasticSearchJestHealthContributorAutoConfiguration}. * * @author Phillip Webb */ @@ -39,17 +37,7 @@ import static org.mockito.Mockito.mock; class ElasticsearchHealthContributorAutoConfigurationTests { private ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(AutoConfigurations - .of(ElasticsearchAutoConfiguration.class, ElasticSearchClientHealthContributorAutoConfiguration.class, - ElasticSearchJestHealthContributorAutoConfiguration.class, - HealthContributorAutoConfiguration.class)); - - @Test - void runShouldCreateIndicator() { - this.contextRunner.withPropertyValues("spring.data.elasticsearch.cluster-nodes:localhost:0") - .withSystemProperties("es.set.netty.runtime.available.processors=false") - .run((context) -> assertThat(context).hasSingleBean(ElasticsearchHealthIndicator.class) - .doesNotHaveBean(ElasticsearchJestHealthIndicator.class)); - } + .of(ElasticSearchJestHealthContributorAutoConfiguration.class, HealthContributorAutoConfiguration.class)); @Test void runWhenUsingJestClientShouldCreateIndicator() { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebEndpointsAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebEndpointsAutoConfigurationIntegrationTests.java index 418c9fc952..9f00949959 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebEndpointsAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebEndpointsAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -80,7 +80,6 @@ class WebEndpointsAutoConfigurationIntegrationTests { Neo4jRepositoriesAutoConfiguration.class, MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, MongoReactiveAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class, HazelcastAutoConfiguration.class, - org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration.class, ElasticsearchDataAutoConfiguration.class, org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration.class, SolrRepositoriesAutoConfiguration.class, SolrAutoConfiguration.class, RedisAutoConfiguration.class, diff --git a/spring-boot-project/spring-boot-autoconfigure/build.gradle b/spring-boot-project/spring-boot-autoconfigure/build.gradle index ff509e7425..49ae79fae7 100644 --- a/spring-boot-project/spring-boot-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-autoconfigure/build.gradle @@ -115,7 +115,9 @@ dependencies { optional 'org.springframework.data:spring-data-jpa' optional 'org.springframework.data:spring-data-rest-webmvc' optional 'org.springframework.data:spring-data-cassandra' - optional 'org.springframework.data:spring-data-elasticsearch' + optional ('org.springframework.data:spring-data-elasticsearch') { + exclude group: 'org.elasticsearch.client', module: 'transport' + } optional 'org.springframework.data:spring-data-jdbc' optional 'org.springframework.data:spring-data-ldap' optional 'org.springframework.data:spring-data-mongodb' diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfiguration.java deleted file mode 100644 index 74736f9f1c..0000000000 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfiguration.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.data.elasticsearch; - -import java.util.Properties; - -import org.elasticsearch.client.Client; -import org.elasticsearch.client.transport.TransportClient; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.elasticsearch.client.TransportClientFactoryBean; - -/** - * {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration - * Auto-configuration} for Elasticsearch. - * - * @author Artur Konczak - * @author Mohsin Husen - * @author Andy Wilkinson - * @since 1.1.0 - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnClass({ Client.class, TransportClientFactoryBean.class }) -@ConditionalOnProperty(prefix = "spring.data.elasticsearch", name = "cluster-nodes", matchIfMissing = false) -@EnableConfigurationProperties(ElasticsearchProperties.class) -public class ElasticsearchAutoConfiguration { - - private final ElasticsearchProperties properties; - - public ElasticsearchAutoConfiguration(ElasticsearchProperties properties) { - this.properties = properties; - } - - @Bean - @ConditionalOnMissingBean - public TransportClient elasticsearchClient() throws Exception { - TransportClientFactoryBean factory = new TransportClientFactoryBean(); - factory.setClusterNodes(this.properties.getClusterNodes()); - factory.setProperties(createProperties()); - factory.afterPropertiesSet(); - return factory.getObject(); - } - - private Properties createProperties() { - Properties properties = new Properties(); - properties.put("cluster.name", this.properties.getClusterName()); - properties.putAll(this.properties.getProperties()); - return properties; - } - -} diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfiguration.java index 018da35408..75a9aa92f9 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,9 +29,6 @@ import org.springframework.data.elasticsearch.repository.config.EnableReactiveEl /** * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's Elasticsearch * support. - *

- * Registers an {@link ElasticsearchTemplate} if no other bean of the same type and the - * same name {@code "elasticsearchTemplate"} is configured. * * @author Brian Clozel * @author Artur Konczak @@ -42,10 +39,8 @@ import org.springframework.data.elasticsearch.repository.config.EnableReactiveEl */ @Configuration(proxyBeanMethods = false) @ConditionalOnClass({ ElasticsearchTemplate.class }) -@AutoConfigureAfter({ ElasticsearchAutoConfiguration.class, RestClientAutoConfiguration.class, - ReactiveRestClientAutoConfiguration.class }) +@AutoConfigureAfter({ RestClientAutoConfiguration.class, ReactiveRestClientAutoConfiguration.class }) @Import({ ElasticsearchDataConfiguration.BaseConfiguration.class, - ElasticsearchDataConfiguration.TransportClientConfiguration.class, ElasticsearchDataConfiguration.RestClientConfiguration.class, ElasticsearchDataConfiguration.ReactiveRestClientConfiguration.class }) public class ElasticsearchDataAutoConfiguration { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java index 653796e03e..2a2291bdca 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java @@ -18,7 +18,6 @@ package org.springframework.boot.autoconfigure.data.elasticsearch; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.action.support.WriteRequest; -import org.elasticsearch.client.Client; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -29,7 +28,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; -import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; @@ -78,25 +76,6 @@ abstract class ElasticsearchDataConfiguration { } - @Configuration(proxyBeanMethods = false) - @ConditionalOnClass(Client.class) - static class TransportClientConfiguration { - - @Bean - @ConditionalOnMissingBean(value = ElasticsearchOperations.class, name = "elasticsearchTemplate") - @ConditionalOnBean(Client.class) - @Deprecated - ElasticsearchTemplate elasticsearchTemplate(Client client, ElasticsearchConverter converter) { - try { - return new ElasticsearchTemplate(client, converter); - } - catch (Exception ex) { - throw new IllegalStateException(ex); - } - } - - } - @Configuration(proxyBeanMethods = false) @ConditionalOnClass({ WebClient.class, ReactiveElasticsearchOperations.class }) static class ReactiveRestClientConfiguration { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchProperties.java deleted file mode 100644 index 562ee0d6b1..0000000000 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchProperties.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.data.elasticsearch; - -import java.util.HashMap; -import java.util.Map; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * Configuration properties for Elasticsearch. - * - * @author Artur Konczak - * @author Mohsin Husen - * @since 1.1.0 - */ -@ConfigurationProperties(prefix = "spring.data.elasticsearch") -public class ElasticsearchProperties { - - /** - * Elasticsearch cluster name. - */ - private String clusterName = "elasticsearch"; - - /** - * Comma-separated list of cluster node addresses. - */ - private String clusterNodes; - - /** - * Additional properties used to configure the client. - */ - private Map properties = new HashMap<>(); - - public String getClusterName() { - return this.clusterName; - } - - public void setClusterName(String clusterName) { - this.clusterName = clusterName; - } - - public String getClusterNodes() { - return this.clusterNodes; - } - - public void setClusterNodes(String clusterNodes) { - this.clusterNodes = clusterNodes; - } - - public Map getProperties() { - return this.properties; - } - - public void setProperties(Map properties) { - this.properties = properties; - } - -} diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 8fd7acca3f..18ce81ccf8 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -348,30 +348,6 @@ "level": "error" } }, - { - "name": "spring.data.elasticsearch.cluster-name", - "type": "java.lang.String", - "description": "Elasticsearch cluster name.", - "deprecation": { - "reason": "The transport client support is deprecated. Use other supported clients instead." - } - }, - { - "name": "spring.data.elasticsearch.cluster-nodes", - "type": "java.lang.String", - "description": "Comma-separated list of cluster node addresses.", - "deprecation": { - "reason": "The transport client support is deprecated. Use other supported clients instead." - } - }, - { - "name": "spring.data.elasticsearch.properties", - "type": "java.util.Map", - "description": "Additional properties used to configure the client.", - "deprecation": { - "reason": "The transport client support is deprecated. Use other supported clients instead." - } - }, { "name": "spring.data.elasticsearch.repositories.enabled", "type": "java.lang.Boolean", diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories index c7392ff2b0..ed7b05bd8c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories @@ -39,7 +39,6 @@ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfigura org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration,\ -org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRepositoriesAutoConfiguration,\ diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfigurationTests.java deleted file mode 100644 index 7d9382602a..0000000000 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfigurationTests.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2012-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.boot.autoconfigure.data.elasticsearch; - -import java.time.Duration; -import java.util.List; - -import org.elasticsearch.client.Client; -import org.elasticsearch.client.transport.TransportClient; -import org.elasticsearch.cluster.node.DiscoveryNode; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.testcontainers.elasticsearch.ElasticsearchContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; - -import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.test.util.TestPropertyValues; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; - -/** - * Tests for {@link ElasticsearchAutoConfiguration}. - * - * @author Phillip Webb - * @author Andy Wilkinson - */ -@Testcontainers(disabledWithoutDocker = true) -class ElasticsearchAutoConfigurationTests { - - @Container - public static ElasticsearchContainer elasticsearch = new VersionOverridingElasticsearchContainer() - .withStartupAttempts(5).withStartupTimeout(Duration.ofMinutes(10)); - - private AnnotationConfigApplicationContext context; - - @BeforeEach - void setUp() { - System.setProperty("es.set.netty.runtime.available.processors", "false"); - } - - @AfterEach - void close() { - if (this.context != null) { - this.context.close(); - } - System.clearProperty("es.set.netty.runtime.available.processors"); - } - - @Test - void useExistingClient() { - this.context = new AnnotationConfigApplicationContext(); - this.context.register(CustomConfiguration.class, PropertyPlaceholderAutoConfiguration.class, - ElasticsearchAutoConfiguration.class); - this.context.refresh(); - assertThat(this.context.getBeanNamesForType(Client.class)).hasSize(1); - assertThat(this.context.getBean("myClient")).isSameAs(this.context.getBean(Client.class)); - } - - @Test - @SuppressWarnings("deprecation") - void createTransportClient() { - this.context = new AnnotationConfigApplicationContext(); - TestPropertyValues - .of("spring.data.elasticsearch.cluster-nodes:" + elasticsearch.getTcpHost().getHostString() + ":" - + elasticsearch.getTcpHost().getPort(), "spring.data.elasticsearch.cluster-name:docker-cluster") - .applyTo(this.context); - this.context.register(PropertyPlaceholderAutoConfiguration.class, ElasticsearchAutoConfiguration.class); - this.context.refresh(); - List connectedNodes = this.context.getBean(TransportClient.class).connectedNodes(); - assertThat(connectedNodes).hasSize(1); - } - - @Configuration(proxyBeanMethods = false) - static class CustomConfiguration { - - @Bean - Client myClient() { - return mock(Client.class); - } - - } - -} diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java index b957169c04..407913c62f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java @@ -16,14 +16,9 @@ package org.springframework.boot.autoconfigure.data.elasticsearch; -import java.time.Duration; - import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.testcontainers.elasticsearch.ElasticsearchContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.elasticsearch.rest.RestClientAutoConfiguration; @@ -31,10 +26,8 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; -import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; -import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -48,15 +41,10 @@ import static org.mockito.Mockito.mock; * @author Peter-Josef Meisch * @author Scott Frederick */ -@Testcontainers(disabledWithoutDocker = true) class ElasticsearchDataAutoConfigurationTests { - @Container - static ElasticsearchContainer elasticsearch = new VersionOverridingElasticsearchContainer().withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); - - private ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration( - AutoConfigurations.of(ElasticsearchAutoConfiguration.class, RestClientAutoConfiguration.class, + private ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, ReactiveRestClientAutoConfiguration.class, ElasticsearchDataAutoConfiguration.class)); @BeforeEach @@ -69,25 +57,6 @@ class ElasticsearchDataAutoConfigurationTests { System.clearProperty("es.set.netty.runtime.available.processors"); } - @Test - @SuppressWarnings("deprecation") - void defaultTransportBeansAreRegistered() { - this.contextRunner - .withPropertyValues( - "spring.data.elasticsearch.cluster-nodes:" + elasticsearch.getTcpHost().getHostString() + ":" - + elasticsearch.getTcpHost().getPort(), - "spring.data.elasticsearch.cluster-name:docker-cluster") - .run((context) -> assertThat(context).hasSingleBean(ElasticsearchTemplate.class) - .hasSingleBean(SimpleElasticsearchMappingContext.class) - .hasSingleBean(ElasticsearchConverter.class)); - } - - @Test - @SuppressWarnings("deprecation") - void defaultTransportBeansNotRegisteredIfNoTransportClient() { - this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(ElasticsearchTemplate.class)); - } - @Test void defaultRestBeansRegistered() { this.contextRunner.run((context) -> assertThat(context).hasSingleBean(ElasticsearchRestTemplate.class) @@ -95,13 +64,6 @@ class ElasticsearchDataAutoConfigurationTests { .hasSingleBean(ElasticsearchConverter.class)); } - @Test - @SuppressWarnings("deprecation") - void customTransportTemplateShouldBeUsed() { - this.contextRunner.withUserConfiguration(CustomTransportTemplate.class).run((context) -> assertThat(context) - .getBeanNames(ElasticsearchTemplate.class).hasSize(1).contains("elasticsearchTemplate")); - } - @Test void customRestTemplateShouldBeUsed() { this.contextRunner.withUserConfiguration(CustomRestTemplate.class).run((context) -> assertThat(context) @@ -115,17 +77,6 @@ class ElasticsearchDataAutoConfigurationTests { .contains("reactiveElasticsearchTemplate")); } - @Configuration(proxyBeanMethods = false) - static class CustomTransportTemplate { - - @Bean - @SuppressWarnings("deprecation") - ElasticsearchTemplate elasticsearchTemplate() { - return mock(ElasticsearchTemplate.class); - } - - } - @Configuration(proxyBeanMethods = false) static class CustomRestTemplate { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfigurationTests.java index dd53c7dff8..8e6658b6c9 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfigurationTests.java @@ -52,9 +52,8 @@ class ElasticsearchRepositoriesAutoConfigurationTests { .withStartupAttempts(5).withStartupTimeout(Duration.ofMinutes(10)); private ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .withConfiguration( - AutoConfigurations.of(ElasticsearchAutoConfiguration.class, RestClientAutoConfiguration.class, - ElasticsearchRepositoriesAutoConfiguration.class, ElasticsearchDataAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, + ElasticsearchRepositoriesAutoConfiguration.class, ElasticsearchDataAutoConfiguration.class)) .withPropertyValues("spring.elasticsearch.rest.uris=" + elasticsearch.getHttpHostAddress()); @Test diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc index 5a2af04fe4..498f0aa0c1 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc @@ -4144,11 +4144,9 @@ Spring Boot supports several clients: * The official Java "Low Level" and "High Level" REST clients * The `ReactiveElasticsearchClient` provided by Spring Data Elasticsearch -The transport client is still available but its support has been deprecated in https://github.com/spring-projects/spring-data-elasticsearch[Spring Data Elasticsearch] and Elasticsearch itself. -It will be removed in a future release. Spring Boot provides a dedicated "`Starter`", `spring-boot-starter-data-elasticsearch`. -The https://github.com/searchbox-io/Jest[Jest] client has been deprecated as well, since both Elasticsearch and Spring Data Elasticsearch provide official support for REST clients. +The https://github.com/searchbox-io/Jest[Jest] client has been deprecated, since both Elasticsearch and Spring Data Elasticsearch provide official support for REST clients. diff --git a/spring-boot-project/spring-boot-starters/spring-boot-starter-data-elasticsearch/build.gradle b/spring-boot-project/spring-boot-starters/spring-boot-starter-data-elasticsearch/build.gradle index bc78b8ba50..af84a57e05 100644 --- a/spring-boot-project/spring-boot-starters/spring-boot-starter-data-elasticsearch/build.gradle +++ b/spring-boot-project/spring-boot-starters/spring-boot-starter-data-elasticsearch/build.gradle @@ -7,5 +7,7 @@ description = "Starter for using Elasticsearch search and analytics engine and S dependencies { api enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies')) api project(':spring-boot-project:spring-boot-starters:spring-boot-starter') - api 'org.springframework.data:spring-data-elasticsearch' + api ('org.springframework.data:spring-data-elasticsearch') { + exclude group: 'org.elasticsearch.client', module: 'transport' + } }