diff --git a/settings.gradle b/settings.gradle index 6688e5e52f..f4a9ef137f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -78,9 +78,8 @@ include "spring-boot-project:spring-boot-gson" include "spring-boot-project:spring-boot-h2console" include "spring-boot-project:spring-boot-hateoas" include "spring-boot-project:spring-boot-hazelcast" -include "spring-boot-project:spring-boot-http-converter" include "spring-boot-project:spring-boot-http-client" -include "spring-boot-project:spring-boot-http-client-reactive" +include "spring-boot-project:spring-boot-http-converter" include "spring-boot-project:spring-boot-http-codec" include "spring-boot-project:spring-boot-integration" include "spring-boot-project:spring-boot-integration-tests" @@ -106,6 +105,8 @@ include "spring-boot-project:spring-boot-quartz" include "spring-boot-project:spring-boot-r2dbc" include "spring-boot-project:spring-boot-reactor" include "spring-boot-project:spring-boot-reactor-netty" +include "spring-boot-project:spring-boot-restclient" +include "spring-boot-project:spring-boot-restclient-test" include "spring-boot-project:spring-boot-rsocket" include "spring-boot-project:spring-boot-security" include "spring-boot-project:spring-boot-security-oauth2-authorization-server" @@ -146,6 +147,7 @@ include "spring-boot-project:spring-boot-undertow" include "spring-boot-project:spring-boot-validation" include "spring-boot-project:spring-boot-web-server" include "spring-boot-project:spring-boot-web-server-test" +include "spring-boot-project:spring-boot-webclient" include "spring-boot-project:spring-boot-webflux" include "spring-boot-project:spring-boot-webmvc" include "spring-boot-project:spring-boot-webservices" diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle index 65b1e1f5dd..628f11ce2c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -40,8 +40,6 @@ dependencies { optional(project(":spring-boot-project:spring-boot-flyway")) optional(project(":spring-boot-project:spring-boot-hazelcast")) optional(project(":spring-boot-project:spring-boot-http-converter")) - optional(project(":spring-boot-project:spring-boot-http-client")) - optional(project(":spring-boot-project:spring-boot-http-client-reactive")) optional(project(":spring-boot-project:spring-boot-http-codec")) optional(project(":spring-boot-project:spring-boot-integration")) optional(project(":spring-boot-project:spring-boot-jackson")) @@ -57,6 +55,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-quartz")) optional(project(":spring-boot-project:spring-boot-r2dbc")) optional(project(":spring-boot-project:spring-boot-reactor-netty")) + optional(project(":spring-boot-project:spring-boot-restclient")) optional(project(":spring-boot-project:spring-boot-security-oauth2-client")) optional(project(":spring-boot-project:spring-boot-security-oauth2-resource-server")) optional(project(":spring-boot-project:spring-boot-security-saml2")) @@ -64,6 +63,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-tomcat")) optional(project(":spring-boot-project:spring-boot-undertow")) optional(project(":spring-boot-project:spring-boot-validation")) + optional(project(":spring-boot-project:spring-boot-webclient")) optional(project(":spring-boot-project:spring-boot-webflux")) optional(project(":spring-boot-project:spring-boot-webmvc")) optional("ch.qos.logback:logback-classic") @@ -167,6 +167,7 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-data-rest")) testImplementation(project(":spring-boot-project:spring-boot-hateoas")) + testImplementation(project(":spring-boot-project:spring-boot-restclient-test")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation(project(":spring-boot-project:spring-boot-web-server-test")) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java index 4a6bc50c6e..792008248c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java @@ -50,7 +50,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.cloud.CloudPlatform; import org.springframework.boot.info.GitProperties; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityService.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityService.java index 4a83943759..b69bbc11de 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityService.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityService.java @@ -25,7 +25,7 @@ import java.util.Map; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.AccessLevel; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryAuthorizationException; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryAuthorizationException.Reason; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.http.HttpStatus; import org.springframework.http.RequestEntity; import org.springframework.util.Assert; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration.java index 0141aa390f..0bf2fefce2 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration.java @@ -50,9 +50,9 @@ import org.springframework.core.annotation.Order; * @since 3.0.0 */ @AutoConfiguration(after = { ObservationAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class }, - afterName = { "org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration", - "org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration", - "org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration" }) + afterName = { "org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration", + "org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration", + "org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration" }) @ConditionalOnClass(Observation.class) @ConditionalOnBean(ObservationRegistry.class) @Import({ RestTemplateObservationConfiguration.class, WebClientObservationConfiguration.class, diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java index 84f5302225..76bf11b049 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java @@ -22,8 +22,8 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestClientCustomizer; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; +import org.springframework.boot.restclient.actuate.observation.ObservationRestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.observation.ClientRequestObservationConvention; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java index 1caf31d5b1..02e831aa7f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java @@ -22,8 +22,8 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.actuate.observation.ObservationRestTemplateCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.observation.ClientRequestObservationConvention; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.java index 15731371d9..d0d63f4468 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.java @@ -22,7 +22,7 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties; import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.http.client.reactive.web.actuate.observation.ObservationWebClientCustomizer; +import org.springframework.boot.webclient.actuate.observation.ObservationWebClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.client.ClientRequestObservationConvention; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java index b57ed604df..86fad15145 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java @@ -38,7 +38,7 @@ import org.springframework.context.annotation.Import; * @author Moritz Halbritter * @since 3.0.0 */ -@AutoConfiguration(afterName = "org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration") +@AutoConfiguration(afterName = "org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration") @ConditionalOnClass(Encoding.class) @Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class }) @EnableConfigurationProperties(ZipkinProperties.class) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java index 02c7de73d5..1d8e2dd726 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java @@ -32,11 +32,11 @@ import org.springframework.boot.actuate.health.HealthComponent; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; import org.springframework.boot.security.autoconfigure.reactive.ReactiveSecurityAutoConfiguration; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java index bec736e073..cd678aeeee 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java @@ -50,7 +50,6 @@ import org.springframework.boot.actuate.endpoint.web.WebOperationRequestPredicat import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; import org.springframework.boot.security.autoconfigure.reactive.ReactiveSecurityAutoConfiguration; @@ -60,7 +59,8 @@ import org.springframework.boot.ssl.jks.JksSslStoreDetails; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; import org.springframework.boot.testsupport.classpath.resources.WithPackageResources; import org.springframework.boot.testsupport.classpath.resources.WithResource; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfigurationTests.java index 20f2d7b1ab..49e79413e6 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfigurationTests.java @@ -40,9 +40,9 @@ import org.springframework.boot.actuate.endpoint.web.WebOperation; import org.springframework.boot.actuate.endpoint.web.WebOperationRequestPredicate; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.security.autoconfigure.servlet.SecurityAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtensionTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtensionTests.java index 501b35b237..cfd7779a3e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtensionTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtensionTests.java @@ -31,9 +31,9 @@ import org.springframework.boot.actuate.health.HealthComponent; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.security.autoconfigure.servlet.SecurityAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; import org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryInfoEndpointWebExtensionTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryInfoEndpointWebExtensionTests.java index 2c942cf45b..97b1ff10a9 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryInfoEndpointWebExtensionTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryInfoEndpointWebExtensionTests.java @@ -30,9 +30,9 @@ import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagem import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.security.autoconfigure.servlet.SecurityAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; import org.springframework.boot.testsupport.classpath.resources.WithResource; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityServiceTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityServiceTests.java index 0ef8b8436b..98c72eecfb 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityServiceTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityServiceTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -25,8 +25,8 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.AccessLevel; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryAuthorizationException; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryAuthorizationException.Reason; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.test.util.ReflectionTestUtils; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java index bb96c3198a..893d27939d 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java @@ -47,13 +47,13 @@ import org.springframework.boot.actuate.autoconfigure.observation.web.client.Htt import org.springframework.boot.actuate.autoconfigure.observation.web.reactive.WebFluxObservationAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java index 9f5a35e470..5382f83389 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java @@ -26,13 +26,13 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestClientCustomizer; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.actuate.observation.ObservationRestClientCustomizer; +import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationWithoutMetricsTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationWithoutMetricsTests.java index 825688baa6..2f678cdea0 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationWithoutMetricsTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationWithoutMetricsTests.java @@ -23,11 +23,11 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.OutputCaptureExtension; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; import org.springframework.boot.testsupport.classpath.ClassPathExclusions; import org.springframework.http.HttpStatus; import org.springframework.web.client.RestClient; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java index 760bec84fc..f42792920f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java @@ -26,13 +26,13 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestTemplateCustomizer; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.actuate.observation.ObservationRestTemplateCustomizer; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationWithoutMetricsTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationWithoutMetricsTests.java index 879e3b2fe5..bbde69babc 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationWithoutMetricsTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationWithoutMetricsTests.java @@ -23,12 +23,12 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.http.HttpStatus; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfigurationTests.java index 38b63c20e8..e5f8f248f8 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfigurationTests.java @@ -29,12 +29,12 @@ import reactor.core.publisher.Mono; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.reactive.web.actuate.observation.ObservationWebClientCustomizer; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; +import org.springframework.boot.webclient.actuate.observation.ObservationWebClientCustomizer; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index 6c61dd89b3..c675874f2f 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -2012,9 +2012,8 @@ bom { "spring-boot-h2console", "spring-boot-hateoas", "spring-boot-hazelcast", - "spring-boot-http-converter", "spring-boot-http-client", - "spring-boot-http-client-reactive", + "spring-boot-http-converter", "spring-boot-http-codec", "spring-boot-integration", "spring-boot-jackson", @@ -2043,6 +2042,8 @@ bom { "spring-boot-r2dbc", "spring-boot-reactor", "spring-boot-reactor-netty", + "spring-boot-restclient", + "spring-boot-restclient-test", "spring-boot-rsocket", "spring-boot-security", "spring-boot-security-oauth2-authorization-server", @@ -2120,6 +2121,7 @@ bom { "spring-boot-validation", "spring-boot-web-server", "spring-boot-web-server-test", + "spring-boot-webclient", "spring-boot-webflux", "spring-boot-webmvc", "spring-boot-websocket" diff --git a/spring-boot-project/spring-boot-devtools/build.gradle b/spring-boot-project/spring-boot-devtools/build.gradle index 99323bf26f..c1407b4423 100644 --- a/spring-boot-project/spring-boot-devtools/build.gradle +++ b/spring-boot-project/spring-boot-devtools/build.gradle @@ -29,6 +29,7 @@ dependencies { intTestDependencies(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) intTestImplementation(project(":spring-boot-project:spring-boot-autoconfigure-all")) + intTestImplementation(project(":spring-boot-project:spring-boot-restclient")) intTestImplementation(project(":spring-boot-project:spring-boot-test")) intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) intTestImplementation(project(":spring-boot-project:spring-boot-web-server-test")) diff --git a/spring-boot-project/spring-boot-devtools/src/intTest/java/org/springframework/boot/devtools/tests/DevToolsIntegrationTests.java b/spring-boot-project/spring-boot-devtools/src/intTest/java/org/springframework/boot/devtools/tests/DevToolsIntegrationTests.java index 49243bbcd6..4be6416178 100644 --- a/spring-boot-project/spring-boot-devtools/src/intTest/java/org/springframework/boot/devtools/tests/DevToolsIntegrationTests.java +++ b/spring-boot-project/spring-boot-devtools/src/intTest/java/org/springframework/boot/devtools/tests/DevToolsIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -25,7 +25,7 @@ import org.apache.hc.core5.util.TimeValue; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.http.HttpStatus; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; diff --git a/spring-boot-project/spring-boot-docs/build.gradle b/spring-boot-project/spring-boot-docs/build.gradle index f5a8e3d3e1..c1c5d5d1f5 100644 --- a/spring-boot-project/spring-boot-docs/build.gradle +++ b/spring-boot-project/spring-boot-docs/build.gradle @@ -90,9 +90,8 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-h2console", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-hateoas", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-hazelcast", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-converter", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-client", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-client-reactive", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-converter", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-codec", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-integration", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-jackson", configuration: "autoConfigurationMetadata")) @@ -116,6 +115,7 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-r2dbc", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-restclient", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-rsocket", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-security", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-security-oauth2-authorization-server", configuration: "autoConfigurationMetadata")) @@ -134,6 +134,7 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-tx", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-undertow", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-validation", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-webclient", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-webflux", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-webmvc", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-webservices", configuration: "autoConfigurationMetadata")) @@ -172,9 +173,8 @@ dependencies { configurationProperties(project(path: ":spring-boot-project:spring-boot-h2console", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-hateoas", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-hazelcast", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":spring-boot-project:spring-boot-http-converter", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-http-client", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":spring-boot-project:spring-boot-http-client-reactive", configuration: "configurationPropertiesMetadata")) + configurationProperties(project(path: ":spring-boot-project:spring-boot-http-converter", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-http-codec", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-integration", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-jackson", configuration: "configurationPropertiesMetadata")) @@ -216,8 +216,8 @@ dependencies { configurationProperties(project(path: ":spring-boot-project:spring-boot-tomcat", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-tx", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-undertow", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":spring-boot-project:spring-boot-webflux", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-web-server", configuration: "configurationPropertiesMetadata")) + configurationProperties(project(path: ":spring-boot-project:spring-boot-webflux", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-webmvc", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-webservices", configuration: "configurationPropertiesMetadata")) @@ -232,8 +232,6 @@ dependencies { implementation(project(path: ":spring-boot-project:spring-boot-devtools")) implementation(project(path: ":spring-boot-project:spring-boot-docker-compose")) implementation(project(path: ":spring-boot-project:spring-boot-http-converter")) - implementation(project(path: ":spring-boot-project:spring-boot-http-client")) - implementation(project(path: ":spring-boot-project:spring-boot-http-client-reactive")) implementation(project(path: ":spring-boot-project:spring-boot-http-codec")) implementation(project(path: ":spring-boot-project:spring-boot-integration")) implementation(project(path: ":spring-boot-project:spring-boot-jackson")) @@ -242,8 +240,9 @@ dependencies { implementation(project(path: ":spring-boot-project:spring-boot-jms")) implementation(project(path: ":spring-boot-project:spring-boot-jsonb")) implementation(project(path: ":spring-boot-project:spring-boot-ldap")) - implementation(project(path: ":spring-boot-project:spring-boot-reactor-netty")) implementation(project(path: ":spring-boot-project:spring-boot-r2dbc")) + implementation(project(path: ":spring-boot-project:spring-boot-reactor-netty")) + implementation(project(path: ":spring-boot-project:spring-boot-restclient")) implementation(project(path: ":spring-boot-project:spring-boot-security")) implementation(project(path: ":spring-boot-project:spring-boot-test")) implementation(project(path: ":spring-boot-project:spring-boot-test-autoconfigure")) @@ -253,6 +252,7 @@ dependencies { implementation(project(path: ":spring-boot-project:spring-boot-tools:spring-boot-loader-tools")) implementation(project(path: ":spring-boot-project:spring-boot-undertow")) implementation(project(path: ":spring-boot-project:spring-boot-web-server-test")) + implementation(project(path: ":spring-boot-project:spring-boot-webclient")) implementation(project(path: ":spring-boot-project:spring-boot-webflux")) implementation(project(path: ":spring-boot-project:spring-boot-webmvc")) implementation(project(path: ":spring-boot-project:spring-boot-webservices")) diff --git a/spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/io/rest-client.adoc b/spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/io/rest-client.adoc index ba59a6fb7c..e26736c9a2 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/io/rest-client.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/io/rest-client.adoc @@ -156,9 +156,9 @@ TIP: You can also change the xref:io/rest-client.adoc#io.rest-client.clienthttpr [[io.rest-client.restclient.ssl]] === RestClient SSL Support -If you need custom SSL configuration on the javadoc:org.springframework.http.client.ClientHttpRequestFactory[] used by the javadoc:org.springframework.web.client.RestClient[], you can inject a javadoc:org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl[] instance that can be used with the builder's `apply` method. +If you need custom SSL configuration on the javadoc:org.springframework.http.client.ClientHttpRequestFactory[] used by the javadoc:org.springframework.web.client.RestClient[], you can inject a javadoc:org.springframework.boot.restclient.autoconfigure.RestClientSsl[] instance that can be used with the builder's `apply` method. -The javadoc:org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl[] interface provides access to any xref:features/ssl.adoc#features.ssl.bundles[SSL bundles] that you have defined in your `application.properties` or `application.yaml` file. +The javadoc:org.springframework.boot.restclient.autoconfigure.RestClientSsl[] interface provides access to any xref:features/ssl.adoc#features.ssl.bundles[SSL bundles] that you have defined in your `application.properties` or `application.yaml` file. The following code shows a typical example: diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.java index cc134bd6ad..e8c0e82626 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.java @@ -16,7 +16,7 @@ package org.springframework.boot.docs.io.restclient.restclient.ssl; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl; +import org.springframework.boot.restclient.autoconfigure.RestClientSsl; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/MyService.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/MyService.java index 97246c5bfb..084ae1fcce 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/MyService.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/MyService.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 the original author or authors. + * Copyright 2012-2025 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. @@ -16,7 +16,7 @@ package org.springframework.boot.docs.io.restclient.resttemplate; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.java index 4c28e8b405..5f998a6a99 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.java @@ -18,8 +18,8 @@ package org.springframework.boot.docs.io.restclient.resttemplate.customization; import java.time.Duration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateBuilderConfigurer; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.autoconfigure.RestTemplateBuilderConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.java index db40f42b8a..29c95fc934 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2025 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. @@ -24,7 +24,7 @@ import org.apache.hc.core5.http.HttpException; import org.apache.hc.core5.http.HttpHost; import org.apache.hc.core5.http.protocol.HttpContext; -import org.springframework.boot.web.client.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateCustomizer; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.java index 1948d18cad..197d73153f 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -17,8 +17,8 @@ package org.springframework.boot.docs.io.restclient.resttemplate.ssl; import org.springframework.boot.docs.io.restclient.resttemplate.Details; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.java index f0f03682a8..a293e1e142 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -18,7 +18,7 @@ package org.springframework.boot.docs.io.restclient.webclient.ssl; import reactor.core.publisher.Mono; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientSsl; +import org.springframework.boot.webclient.autoconfigure.WebClientSsl; import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.java index 8649459b87..cdc2efb63b 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -21,10 +21,10 @@ import java.time.Duration; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpHeaders; diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.kt index 03dcd7fde0..223fb5bf48 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.kt @@ -17,7 +17,7 @@ package org.springframework.boot.docs.io.restclient.restclient.ssl import org.springframework.boot.docs.io.restclient.restclient.ssl.settings.Details -import org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl +import org.springframework.boot.restclient.autoconfigure.RestClientSsl import org.springframework.stereotype.Service import org.springframework.web.client.RestClient diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/MyService.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/MyService.kt index e4a06c712e..c6ff20c044 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/MyService.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/MyService.kt @@ -16,7 +16,7 @@ package org.springframework.boot.docs.io.restclient.resttemplate -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.stereotype.Service import org.springframework.web.client.RestTemplate diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.kt index f94ff98475..1a9b6bf28a 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.kt @@ -16,8 +16,8 @@ package org.springframework.boot.docs.io.restclient.resttemplate.customization -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateBuilderConfigurer -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.autoconfigure.RestTemplateBuilderConfigurer +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import java.time.Duration diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.kt index a715844193..8555fd651b 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.kt @@ -23,7 +23,7 @@ import org.apache.hc.client5.http.routing.HttpRoutePlanner import org.apache.hc.core5.http.HttpException import org.apache.hc.core5.http.HttpHost import org.apache.hc.core5.http.protocol.HttpContext -import org.springframework.boot.web.client.RestTemplateCustomizer +import org.springframework.boot.restclient.RestTemplateCustomizer import org.springframework.http.client.HttpComponentsClientHttpRequestFactory import org.springframework.web.client.RestTemplate diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.kt index 44fee4f23c..7d48aee0f6 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.kt @@ -17,7 +17,7 @@ package org.springframework.boot.docs.io.restclient.resttemplate.ssl import org.springframework.boot.docs.io.restclient.resttemplate.Details import org.springframework.boot.ssl.SslBundles -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.stereotype.Service import org.springframework.web.client.RestTemplate diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.kt index 46a41fa760..bfa1da65f0 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.kt @@ -16,7 +16,7 @@ package org.springframework.boot.docs.io.restclient.webclient.ssl -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientSsl +import org.springframework.boot.webclient.autoconfigure.WebClientSsl import org.springframework.stereotype.Service import org.springframework.web.reactive.function.client.WebClient import reactor.core.publisher.Mono diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.kt index 84348177c0..a75959680e 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.kt @@ -23,7 +23,7 @@ import org.springframework.boot.test.context.SpringBootTest import org.springframework.boot.test.context.SpringBootTest.WebEnvironment import org.springframework.boot.test.context.TestConfiguration import org.springframework.boot.web.server.test.client.TestRestTemplate -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.context.annotation.Bean import java.time.Duration diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-http-client-reactive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index b0b3a71ba7..0000000000 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,3 +0,0 @@ -org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpConnectorAutoConfiguration -org.springframework.boot.http.client.reactive.service.autoconfigure.ReactiveHttpServiceClientAutoConfiguration -org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration diff --git a/spring-boot-project/spring-boot-http-client/build.gradle b/spring-boot-project/spring-boot-http-client/build.gradle index 5c95587eff..fda85f22e6 100644 --- a/spring-boot-project/spring-boot-http-client/build.gradle +++ b/spring-boot-project/spring-boot-http-client/build.gradle @@ -10,19 +10,21 @@ description = "Spring Boot HTTP Client" dependencies { api(project(":spring-boot-project:spring-boot")) + api("org.springframework:spring-web") implementation(project(":spring-boot-project:spring-boot-http-converter")) optional(project(":spring-boot-project:spring-boot-autoconfigure")) - optional("io.projectreactor.netty:reactor-netty-http") + optional(project(":spring-boot-project:spring-boot-reactor-netty")) optional("org.apache.httpcomponents.client5:httpclient5") + optional("org.apache.httpcomponents.core5:httpcore5-reactive") optional("org.eclipse.jetty:jetty-client") + optional("org.eclipse.jetty:jetty-reactive-httpclient") testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation(project(":spring-boot-project:spring-boot-tomcat")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - testImplementation("io.micrometer:micrometer-observation-test") + testImplementation("org.springframework:spring-webflux") testRuntimeOnly("ch.qos.logback:logback-classic") - testRuntimeOnly("jakarta.servlet:jakarta.servlet-api") - testRuntimeOnly("org.springframework:spring-webflux") } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHints.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHints.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHints.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHints.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettings.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettings.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettings.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettings.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/Empty.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/Empty.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/Empty.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/Empty.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpClientSettings.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpClientSettings.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpClientSettings.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpClientSettings.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpAsyncClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpAsyncClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpAsyncClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpAsyncClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsRedirectStrategy.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsRedirectStrategy.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsRedirectStrategy.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsRedirectStrategy.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsSslBundleTlsStrategy.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsSslBundleTlsStrategy.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsSslBundleTlsStrategy.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsSslBundleTlsStrategy.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpRedirects.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpRedirects.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpRedirects.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpRedirects.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JdkHttpClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JdkHttpClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JdkHttpClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JdkHttpClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JettyHttpClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JettyHttpClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JettyHttpClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JettyHttpClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReactorHttpClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReactorHttpClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReactorHttpClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReactorHttpClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/package-info.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/package-info.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/package-info.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/package-info.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorSettings.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorSettings.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorSettings.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorSettings.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/AbstractClientHttpConnectorProperties.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/AbstractClientHttpConnectorProperties.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/AbstractClientHttpConnectorProperties.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/AbstractClientHttpConnectorProperties.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfiguration.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfiguration.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfiguration.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfiguration.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorBuilderCustomizer.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorBuilderCustomizer.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorBuilderCustomizer.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorBuilderCustomizer.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectors.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectors.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectors.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectors.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ConditionalOnClientHttpConnectorBuilderDetection.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ConditionalOnClientHttpConnectorBuilderDetection.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ConditionalOnClientHttpConnectorBuilderDetection.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ConditionalOnClientHttpConnectorBuilderDetection.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientProperties.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientProperties.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientProperties.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientProperties.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/package-info.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/package-info.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/package-info.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/package-info.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/package-info.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/package-info.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/package-info.java diff --git a/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/aot.factories b/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/aot.factories new file mode 100644 index 0000000000..980d82c814 --- /dev/null +++ b/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/aot.factories @@ -0,0 +1,2 @@ +org.springframework.aot.hint.RuntimeHintsRegistrar=\ +org.springframework.boot.http.client.ClientHttpRequestFactoryRuntimeHints diff --git a/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index beaa0a16da..d62f740516 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,3 +1,2 @@ org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration -org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration -org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration +org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpConnectorAutoConfiguration diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java similarity index 98% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java index 253b17363a..e934ad1537 100644 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java +++ b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java @@ -40,7 +40,6 @@ import org.springframework.boot.ssl.SslOptions; import org.springframework.boot.ssl.jks.JksSslStoreBundle; import org.springframework.boot.ssl.jks.JksSslStoreDetails; import org.springframework.boot.testsupport.classpath.resources.WithPackageResources; -import org.springframework.boot.testsupport.web.servlet.DirtiesUrlFactories; import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory; import org.springframework.boot.web.server.Ssl; import org.springframework.boot.web.server.Ssl.ClientAuth; @@ -62,7 +61,6 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; * @author Phillip Webb * @author Andy Wilkinson */ -@DirtiesUrlFactories abstract class AbstractClientHttpRequestFactoryBuilderTests { private static final Function ALWAYS_FOUND = (method) -> HttpStatus.FOUND; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHintsTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHintsTests.java similarity index 100% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHintsTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHintsTests.java diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettingsTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettingsTests.java similarity index 100% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettingsTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettingsTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java similarity index 98% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java index d771131a4c..30e05f373e 100644 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java +++ b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/TestCustomizer.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/TestCustomizer.java similarity index 95% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/TestCustomizer.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/TestCustomizer.java index 1d59ecb905..f415518594 100644 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/TestCustomizer.java +++ b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/TestCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/TestCustomizer.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/TestCustomizer.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/TestCustomizer.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/TestCustomizer.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfigurationTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfigurationTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfigurationTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfigurationTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorsTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorsTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorsTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorsTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientSettingsPropertiesTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientSettingsPropertiesTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientSettingsPropertiesTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientSettingsPropertiesTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/resources/org/springframework/boot/http/client/reactive/test.jks b/spring-boot-project/spring-boot-http-client/src/test/resources/org/springframework/boot/http/client/reactive/test.jks similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/resources/org/springframework/boot/http/client/reactive/test.jks rename to spring-boot-project/spring-boot-http-client/src/test/resources/org/springframework/boot/http/client/reactive/test.jks diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/resources/org/springframework/boot/http/client/test.jks b/spring-boot-project/spring-boot-http-client/src/test/resources/org/springframework/boot/http/client/test.jks similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/resources/org/springframework/boot/http/client/test.jks rename to spring-boot-project/spring-boot-http-client/src/test/resources/org/springframework/boot/http/client/test.jks diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/AbstractClientHttpRequestFactoriesTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/AbstractClientHttpRequestFactoriesTests.java deleted file mode 100644 index 8ea57cc0cc..0000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/AbstractClientHttpRequestFactoriesTests.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2012-2025 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.web.client; - -import java.io.IOException; -import java.net.URI; -import java.nio.charset.StandardCharsets; -import java.time.Duration; - -import javax.net.ssl.SSLHandshakeException; - -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.junit.jupiter.api.Assumptions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; - -import org.springframework.boot.ssl.SslBundle; -import org.springframework.boot.ssl.SslBundleKey; -import org.springframework.boot.ssl.jks.JksSslStoreBundle; -import org.springframework.boot.ssl.jks.JksSslStoreDetails; -import org.springframework.boot.testsupport.classpath.resources.WithPackageResources; -import org.springframework.boot.testsupport.web.servlet.DirtiesUrlFactories; -import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory; -import org.springframework.boot.web.server.Ssl; -import org.springframework.boot.web.server.Ssl.ClientAuth; -import org.springframework.boot.web.server.WebServer; -import org.springframework.http.HttpMethod; -import org.springframework.http.client.ClientHttpRequest; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.util.StreamUtils; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatExceptionOfType; - -/** - * Base classes for testing of {@link ClientHttpRequestFactories} with different HTTP - * clients on the classpath. - * - * @param the {@link ClientHttpRequestFactory} to be produced - * @author Andy Wilkinson - */ -@DirtiesUrlFactories -@SuppressWarnings("removal") -abstract class AbstractClientHttpRequestFactoriesTests { - - private final Class requestFactoryType; - - protected AbstractClientHttpRequestFactoriesTests(Class requestFactoryType) { - this.requestFactoryType = requestFactoryType; - } - - @Test - @SuppressWarnings("deprecation") - void getReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(this.requestFactoryType); - } - - @Test - @SuppressWarnings("deprecation") - void getOfGeneralTypeReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(ClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(this.requestFactoryType); - } - - @Test - @SuppressWarnings("deprecation") - void getOfSpecificTypeReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(this.requestFactoryType, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(this.requestFactoryType); - } - - @Test - @SuppressWarnings({ "deprecation", "unchecked" }) - void getReturnsRequestFactoryWithConfiguredConnectTimeout() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(60))); - assertThat(connectTimeout((T) requestFactory)).isEqualTo(Duration.ofSeconds(60).toMillis()); - } - - @Test - @SuppressWarnings({ "deprecation", "unchecked" }) - void getReturnsRequestFactoryWithConfiguredReadTimeout() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofSeconds(120))); - assertThat(readTimeout((T) requestFactory)).isEqualTo(Duration.ofSeconds(120).toMillis()); - } - - @Test - @SuppressWarnings("deprecation") - void shouldSetConnectTimeoutsWhenUsingReflective() { - Assumptions.assumeTrue(supportsSettingConnectTimeout()); - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS - .withConnectTimeout(Duration.ofSeconds(1)); - T requestFactory = ClientHttpRequestFactories - .get(() -> ClientHttpRequestFactories.get(this.requestFactoryType, settings), settings); - assertThat(connectTimeout(requestFactory)).isEqualTo(1000); - } - - @Test - @SuppressWarnings("deprecation") - void shouldSetReadTimeoutsWhenUsingReflective() { - Assumptions.assumeTrue(supportsSettingReadTimeout()); - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS - .withReadTimeout(Duration.ofSeconds(2)); - T requestFactory = ClientHttpRequestFactories - .get(() -> ClientHttpRequestFactories.get(this.requestFactoryType, settings), settings); - assertThat(readTimeout(requestFactory)).isEqualTo(2000); - } - - @ParameterizedTest - @SuppressWarnings("deprecation") - @ValueSource(strings = { "GET", "POST" }) - @WithPackageResources("test.jks") - void connectWithSslBundle(String httpMethod) throws Exception { - TomcatServletWebServerFactory webServerFactory = new TomcatServletWebServerFactory(0); - Ssl ssl = new Ssl(); - ssl.setClientAuth(ClientAuth.NEED); - ssl.setKeyPassword("password"); - ssl.setKeyStore("classpath:test.jks"); - ssl.setTrustStore("classpath:test.jks"); - webServerFactory.setSsl(ssl); - WebServer webServer = webServerFactory - .getWebServer((context) -> context.addServlet("test", TestServlet.class).addMapping("/")); - try { - webServer.start(); - int port = webServer.getPort(); - URI uri = new URI("https://localhost:%s".formatted(port)); - ClientHttpRequestFactory insecureRequestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS); - ClientHttpRequest insecureRequest = insecureRequestFactory.createRequest(uri, HttpMethod.GET); - assertThatExceptionOfType(SSLHandshakeException.class) - .isThrownBy(() -> insecureRequest.execute().getBody()); - JksSslStoreDetails storeDetails = JksSslStoreDetails.forLocation("classpath:test.jks"); - JksSslStoreBundle stores = new JksSslStoreBundle(storeDetails, storeDetails); - SslBundle sslBundle = SslBundle.of(stores, SslBundleKey.of("password")); - ClientHttpRequestFactory secureRequestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS.withSslBundle(sslBundle)); - ClientHttpRequest secureRequest = secureRequestFactory.createRequest(uri, HttpMethod.valueOf(httpMethod)); - String secureResponse = StreamUtils.copyToString(secureRequest.execute().getBody(), StandardCharsets.UTF_8); - assertThat(secureResponse).contains("Received " + httpMethod + " request to /"); - } - finally { - webServer.stop(); - } - } - - protected abstract boolean supportsSettingConnectTimeout(); - - protected abstract long connectTimeout(T requestFactory); - - protected abstract boolean supportsSettingReadTimeout(); - - protected abstract long readTimeout(T requestFactory); - - public static class TestServlet extends HttpServlet { - - @Override - public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { - res.getWriter().println("Received " + req.getMethod() + " request to " + req.getRequestURI()); - } - - } - -} diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesHttpComponentsTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesHttpComponentsTests.java deleted file mode 100644 index d7d99502d0..0000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesHttpComponentsTests.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2012-2024 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.web.client; - -import org.apache.hc.client5.http.HttpRoute; -import org.apache.hc.client5.http.classic.HttpClient; -import org.apache.hc.core5.function.Resolver; -import org.apache.hc.core5.http.io.SocketConfig; - -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * Tests for {@link ClientHttpRequestFactories} when Apache Http Components is the - * predominant HTTP client. - * - * @author Andy Wilkinson - */ -@SuppressWarnings("removal") -class ClientHttpRequestFactoriesHttpComponentsTests - extends AbstractClientHttpRequestFactoriesTests { - - ClientHttpRequestFactoriesHttpComponentsTests() { - super(HttpComponentsClientHttpRequestFactory.class); - } - - @Override - protected long connectTimeout(HttpComponentsClientHttpRequestFactory requestFactory) { - return (long) ReflectionTestUtils.getField(requestFactory, "connectTimeout"); - } - - @Override - @SuppressWarnings("unchecked") - protected long readTimeout(HttpComponentsClientHttpRequestFactory requestFactory) { - HttpClient httpClient = requestFactory.getHttpClient(); - Object connectionManager = ReflectionTestUtils.getField(httpClient, "connManager"); - SocketConfig socketConfig = ((Resolver) ReflectionTestUtils.getField(connectionManager, - "socketConfigResolver")) - .resolve(null); - return socketConfig.getSoTimeout().toMilliseconds(); - } - - @Override - protected boolean supportsSettingConnectTimeout() { - return true; - } - - @Override - protected boolean supportsSettingReadTimeout() { - return false; - } - -} diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesJettyTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesJettyTests.java deleted file mode 100644 index 06ce1f8716..0000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesJettyTests.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2012-2024 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.web.client; - -import org.eclipse.jetty.client.HttpClient; - -import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.http.client.JettyClientHttpRequestFactory; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * Tests for {@link ClientHttpRequestFactories} when Jetty is the predominant HTTP client. - * - * @author Arjen Poutsma - */ -@ClassPathExclusions("httpclient5-*.jar") -@SuppressWarnings("removal") -class ClientHttpRequestFactoriesJettyTests - extends AbstractClientHttpRequestFactoriesTests { - - ClientHttpRequestFactoriesJettyTests() { - super(JettyClientHttpRequestFactory.class); - } - - @Override - protected long connectTimeout(JettyClientHttpRequestFactory requestFactory) { - return ((HttpClient) ReflectionTestUtils.getField(requestFactory, "httpClient")).getConnectTimeout(); - } - - @Override - protected long readTimeout(JettyClientHttpRequestFactory requestFactory) { - return (long) ReflectionTestUtils.getField(requestFactory, "readTimeout"); - } - - @Override - protected boolean supportsSettingConnectTimeout() { - return true; - } - - @Override - protected boolean supportsSettingReadTimeout() { - return true; - } - -} diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesReactorTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesReactorTests.java deleted file mode 100644 index d92afb894b..0000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesReactorTests.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2012-2024 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.web.client; - -import java.time.Duration; - -import io.netty.channel.ChannelOption; -import reactor.netty.http.client.HttpClient; - -import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.http.client.ReactorClientHttpRequestFactory; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * Tests for {@link ClientHttpRequestFactories} when Reactor Netty is the predominant HTTP - * client. - * - * @author Andy Wilkinson - */ -@ClassPathExclusions({ "httpclient5-*.jar", "jetty-client-*.jar" }) -@SuppressWarnings("removal") -class ClientHttpRequestFactoriesReactorTests - extends AbstractClientHttpRequestFactoriesTests { - - ClientHttpRequestFactoriesReactorTests() { - super(ReactorClientHttpRequestFactory.class); - } - - @Override - protected long connectTimeout(ReactorClientHttpRequestFactory requestFactory) { - return (int) ((HttpClient) ReflectionTestUtils.getField(requestFactory, "httpClient")).configuration() - .options() - .get(ChannelOption.CONNECT_TIMEOUT_MILLIS); - } - - @Override - protected long readTimeout(ReactorClientHttpRequestFactory requestFactory) { - return ((Duration) ReflectionTestUtils.getField(requestFactory, "readTimeout")).toMillis(); - } - - @Override - protected boolean supportsSettingConnectTimeout() { - return true; - } - - @Override - protected boolean supportsSettingReadTimeout() { - return true; - } - -} diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesSimpleTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesSimpleTests.java deleted file mode 100644 index b83e0fe5a4..0000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesSimpleTests.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2012-2024 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.web.client; - -import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.http.client.SimpleClientHttpRequestFactory; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * Tests for {@link ClientHttpRequestFactories} when the simple JDK-based client is the - * predominant HTTP client. - * - * @author Andy Wilkinson - */ -@ClassPathExclusions({ "httpclient5-*.jar", "jetty-client-*.jar", "reactor-netty-http-*.jar" }) -@SuppressWarnings("removal") -class ClientHttpRequestFactoriesSimpleTests - extends AbstractClientHttpRequestFactoriesTests { - - ClientHttpRequestFactoriesSimpleTests() { - super(SimpleClientHttpRequestFactory.class); - } - - @Override - protected long connectTimeout(SimpleClientHttpRequestFactory requestFactory) { - return (int) ReflectionTestUtils.getField(requestFactory, "connectTimeout"); - } - - @Override - protected long readTimeout(SimpleClientHttpRequestFactory requestFactory) { - return (int) ReflectionTestUtils.getField(requestFactory, "readTimeout"); - } - - @Override - protected boolean supportsSettingConnectTimeout() { - return true; - } - - @Override - protected boolean supportsSettingReadTimeout() { - return true; - } - -} diff --git a/spring-boot-project/spring-boot-jersey/build.gradle b/spring-boot-project/spring-boot-jersey/build.gradle index 9dc68cfb65..3e923e1103 100644 --- a/spring-boot-project/spring-boot-jersey/build.gradle +++ b/spring-boot-project/spring-boot-jersey/build.gradle @@ -15,7 +15,6 @@ dependencies { api("org.glassfish.jersey.core:jersey-server") api("org.glassfish.jersey.ext:jersey-spring6") api("org.glassfish.jersey.media:jersey-media-json-jackson") - compileOnly("jakarta.servlet:jakarta.servlet-api") implementation("org.springframework:spring-web") @@ -23,6 +22,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-autoconfigure")) optional(project(":spring-boot-project:spring-boot-jackson")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tomcat")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-mustache/build.gradle b/spring-boot-project/spring-boot-mustache/build.gradle index 935510cdf4..1ed4d51521 100644 --- a/spring-boot-project/spring-boot-mustache/build.gradle +++ b/spring-boot-project/spring-boot-mustache/build.gradle @@ -18,6 +18,8 @@ dependencies { optional("org.springframework:spring-webflux") optional(project(":spring-boot-project:spring-boot-autoconfigure")) + testImplementation(project(":spring-boot-project:spring-boot-reactor-netty")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tomcat")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-restclient-test/build.gradle b/spring-boot-project/spring-boot-restclient-test/build.gradle new file mode 100644 index 0000000000..f7bbf53f39 --- /dev/null +++ b/spring-boot-project/spring-boot-restclient-test/build.gradle @@ -0,0 +1,20 @@ +plugins { + id "java-library" + id "org.springframework.boot.deployed" + id "org.springframework.boot.optional-dependencies" +} + +description = "Spring Boot RestClient Test" + +dependencies { + api(project(":spring-boot-project:spring-boot")) + + optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional(project(":spring-boot-project:spring-boot-restclient")) + optional("org.springframework:spring-test") + + testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) + + testRuntimeOnly("ch.qos.logback:logback-classic") +} diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizer.java b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizer.java similarity index 98% rename from spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizer.java rename to spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizer.java index d2696008df..976bb70cc2 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizer.java +++ b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.util.Collections; import java.util.Map; @@ -22,7 +22,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; import org.springframework.beans.BeanUtils; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.test.web.client.MockRestServiceServer.MockRestServiceServerBuilder; diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizer.java b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizer.java similarity index 97% rename from spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizer.java rename to spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizer.java index 06b3d62af0..e1d4fd1f55 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.util.Collections; import java.util.Map; @@ -22,8 +22,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; import org.springframework.beans.BeanUtils; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateCustomizer; import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.test.web.client.MockRestServiceServer.MockRestServiceServerBuilder; diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManager.java b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManager.java similarity index 98% rename from spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManager.java rename to spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManager.java index 5912cb6f22..3e7624c2a0 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManager.java +++ b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManager.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.io.IOException; import java.io.OutputStream; @@ -22,7 +22,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.time.Duration; -import org.springframework.boot.web.client.RootUriTemplateHandler; +import org.springframework.boot.restclient.RootUriTemplateHandler; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.client.support.HttpRequestWrapper; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/package-info.java b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/package-info.java similarity index 85% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/package-info.java index 7ebb59c4f9..f4fbd35704 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/package-info.java +++ b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/package-info.java @@ -15,6 +15,6 @@ */ /** - * Auto-configuration for web clients. + * RestClient and RestTemplate test utilities. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.test; diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizerTests.java b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizerTests.java similarity index 99% rename from spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizerTests.java rename to spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizerTests.java index 82469c395f..b30439b2b8 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.util.function.Supplier; diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizerTests.java b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizerTests.java similarity index 98% rename from spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizerTests.java rename to spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizerTests.java index c6787d202c..0e6644d4ca 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizerTests.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.util.function.Supplier; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.test.web.client.RequestExpectationManager; diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManagerTests.java b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManagerTests.java similarity index 98% rename from spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManagerTests.java rename to spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManagerTests.java index 69b7047611..327bb03859 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManagerTests.java +++ b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManagerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.net.URI; @@ -24,7 +24,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.support.HttpRequestWrapper; import org.springframework.test.web.client.ExpectedCount; diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/scan/SimpleFactoryBean.java b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/scan/SimpleFactoryBean.java similarity index 92% rename from spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/scan/SimpleFactoryBean.java rename to spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/scan/SimpleFactoryBean.java index e93cafb80d..a65faedb7a 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/scan/SimpleFactoryBean.java +++ b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/scan/SimpleFactoryBean.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2025 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client.scan; +package org.springframework.boot.restclient.test.scan; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.annotation.Autowired; diff --git a/spring-boot-project/spring-boot-restclient/build.gradle b/spring-boot-project/spring-boot-restclient/build.gradle new file mode 100644 index 0000000000..7eb8c86da2 --- /dev/null +++ b/spring-boot-project/spring-boot-restclient/build.gradle @@ -0,0 +1,29 @@ +plugins { + id "java-library" + id "org.springframework.boot.auto-configuration" + id "org.springframework.boot.deployed" + id "org.springframework.boot.optional-dependencies" +} + +description = "Spring Boot RestClient and RestTemplate" + +dependencies { + api(project(":spring-boot-project:spring-boot")) + api(project(":spring-boot-project:spring-boot-http-client")) + + implementation(project(":spring-boot-project:spring-boot-http-converter")) + + optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional("io.projectreactor.netty:reactor-netty-http") + optional("org.apache.httpcomponents.client5:httpclient5") + optional("org.eclipse.jetty:jetty-client") + + testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation(project(":spring-boot-project:spring-boot-tomcat")) + testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) + testImplementation("io.micrometer:micrometer-observation-test") + + testRuntimeOnly("ch.qos.logback:logback-classic") + testRuntimeOnly("jakarta.servlet:jakarta.servlet-api") + testRuntimeOnly("org.springframework:spring-webflux") +} diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/BasicAuthentication.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/BasicAuthentication.java similarity index 97% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/BasicAuthentication.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/BasicAuthentication.java index e76c2d8ce0..03df807f54 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/BasicAuthentication.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/BasicAuthentication.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.nio.charset.Charset; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestClientCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestClientCustomizer.java similarity index 94% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestClientCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestClientCustomizer.java index a608d57441..1cbf1bea65 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestClientCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestClientCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import org.springframework.web.client.RestClient; @@ -23,7 +23,7 @@ import org.springframework.web.client.RestClient; * {@link org.springframework.web.client.RestClient.Builder RestClient.Builder}. * * @author Arjen Poutsma - * @since 3.2.0 + * @since 4.0.0 */ @FunctionalInterface public interface RestClientCustomizer { diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilder.java similarity index 96% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilder.java index 7ceae1fcd4..a34f146c69 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.nio.charset.Charset; import java.time.Duration; @@ -27,7 +27,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.Function; import java.util.function.Supplier; import java.util.function.UnaryOperator; @@ -67,7 +66,7 @@ import org.springframework.web.util.UriTemplateHandler; * @author Ilya Lukyanovich * @author Scott Frederick * @author Yanming Zhou - * @since 1.4.0 + * @since 4.0.0 */ public class RestTemplateBuilder { @@ -326,27 +325,6 @@ public class RestTemplateBuilder { return requestFactoryBuilder(ClientHttpRequestFactoryBuilder.of(requestFactorySupplier)); } - /** - * Set the request factory function that should be called to provide a - * {@link ClientHttpRequestFactory} each time we {@link #build()} a new - * {@link RestTemplate} instance. - * @param requestFactoryFunction the settings to request factory function - * @return a new builder instance - * @since 3.0.0 - * @deprecated since 3.4.0 for removal in 4.0.0 in favor of - * {@link #requestFactoryBuilder(ClientHttpRequestFactoryBuilder)} - * @see ClientHttpRequestFactoryBuilder - * @see #requestFactoryBuilder(ClientHttpRequestFactoryBuilder) - */ - @Deprecated(since = "3.4.0", forRemoval = true) - @SuppressWarnings("removal") - public RestTemplateBuilder requestFactory( - Function requestFactoryFunction) { - Assert.notNull(requestFactoryFunction, "'requestFactoryFunction' must not be null"); - return requestFactoryBuilder((settings) -> requestFactoryFunction - .apply(org.springframework.boot.web.client.ClientHttpRequestFactorySettings.of(settings))); - } - /** * Set the {@link ClientHttpRequestFactoryBuilder} that should be used each time we * {@link #build()} a new {@link RestTemplate} instance. diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializer.java similarity index 97% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializer.java index 51b85ac187..2e6fe760ea 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.util.List; import java.util.Map; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateCustomizer.java similarity index 94% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateCustomizer.java index 30d6264b90..6a45fe6316 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import org.springframework.web.client.RestTemplate; @@ -22,7 +22,7 @@ import org.springframework.web.client.RestTemplate; * Callback interface that can be used to customize a {@link RestTemplate}. * * @author Phillip Webb - * @since 1.4.0 + * @since 4.0.0 * @see RestTemplateBuilder */ @FunctionalInterface diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateRequestCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateRequestCustomizer.java similarity index 95% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateRequestCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateRequestCustomizer.java index 8d0d3f5a02..5dae2a6178 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateRequestCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateRequestCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpRequestInitializer; @@ -27,7 +27,7 @@ import org.springframework.web.client.RestTemplate; * @param the {@link ClientHttpRequest} type * @author Ilya Lukyanovich * @author Phillip Webb - * @since 2.2.0 + * @since 4.0.0 * @see RestTemplateBuilder * @see ClientHttpRequestInitializer */ diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriBuilderFactory.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriBuilderFactory.java similarity index 97% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriBuilderFactory.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriBuilderFactory.java index 61c6b815fc..8b89e5aef3 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriBuilderFactory.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriBuilderFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import org.springframework.util.Assert; import org.springframework.web.client.RestTemplate; @@ -27,7 +27,7 @@ import org.springframework.web.util.UriTemplateHandler; * {@link UriBuilderFactory} to set the root for URI that starts with {@code '/'}. * * @author Scott Frederick - * @since 3.2.3 + * @since 4.0.0 */ public class RootUriBuilderFactory extends RootUriTemplateHandler implements UriBuilderFactory { diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriTemplateHandler.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriTemplateHandler.java similarity index 97% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriTemplateHandler.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriTemplateHandler.java index 07f5387188..852c63b286 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriTemplateHandler.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriTemplateHandler.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.net.URI; import java.util.Map; @@ -28,7 +28,7 @@ import org.springframework.web.util.UriTemplateHandler; * * @author Phillip Webb * @author Scott Frederick - * @since 1.4.0 + * @since 4.0.0 */ public class RootUriTemplateHandler implements UriTemplateHandler { diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizer.java index c63978948b..49a562631a 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizer.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.http.client.observation.ClientRequestObservationConvention; import org.springframework.util.Assert; import org.springframework.web.client.RestClient.Builder; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizer.java index b21270107f..5ede7226ef 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizer.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; -import org.springframework.boot.web.client.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateCustomizer; import org.springframework.http.client.observation.ClientRequestObservationConvention; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/package-info.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/package-info.java similarity index 90% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/package-info.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/package-info.java index 6694cd293b..a6a549f230 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/package-info.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/package-info.java @@ -17,4 +17,4 @@ /** * Observation integration for RestClient and RestTemplate. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSsl.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSsl.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSsl.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSsl.java index c85279033c..6fd4ecd62e 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSsl.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSsl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.function.Consumer; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizer.java index 6d18b362b0..827d856df8 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizer.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.Arrays; import java.util.List; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.util.Assert; import org.springframework.web.client.RestClient; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationCondition.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationCondition.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationCondition.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationCondition.java index 86b468f967..a3e7c22166 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationCondition.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationCondition.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.NoneNestedConditions; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java index 951b044724..746374a99b 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import org.springframework.boot.autoconfigure.condition.AnyNestedCondition; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfiguration.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfiguration.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfiguration.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfiguration.java index 6d3652d097..519ae4e609 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.config.ConfigurableBeanFactory; @@ -29,8 +29,8 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Scope; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurer.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurer.java index 8641639c2d..1b7d099075 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurer.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.Collections; import java.util.List; import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient.Builder; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientSsl.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientSsl.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientSsl.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientSsl.java index 241bd71054..348f4f5075 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientSsl.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientSsl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.function.Consumer; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfiguration.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfiguration.java similarity index 92% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfiguration.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfiguration.java index 9abe37ce85..abd105054d 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfiguration.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -25,9 +25,9 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateRequestCustomizer; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateRequestCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Lazy; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateBuilderConfigurer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateBuilderConfigurer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateBuilderConfigurer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateBuilderConfigurer.java index cbf14abfd7..9017c7e37b 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateBuilderConfigurer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateBuilderConfigurer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.Collection; import java.util.List; @@ -23,9 +23,9 @@ import java.util.function.BiFunction; import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateRequestCustomizer; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateRequestCustomizer; import org.springframework.util.ObjectUtils; /** diff --git a/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/package-info.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/package-info.java new file mode 100644 index 0000000000..9d58e653e0 --- /dev/null +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 2012-2025 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. + */ + +/** + * Auto-configuration for RestClient and RestTemplate. + */ +package org.springframework.boot.restclient.autoconfigure; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/package-info.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/package-info.java similarity index 93% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/package-info.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/package-info.java index 92f8dc56e0..e3da0d081a 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/package-info.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/package-info.java @@ -17,4 +17,4 @@ /** * Web client utilities. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/AbstractHttpClientServiceProperties.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/AbstractHttpClientServiceProperties.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/AbstractHttpClientServiceProperties.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/AbstractHttpClientServiceProperties.java index 791c500d55..48b187f0bf 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/AbstractHttpClientServiceProperties.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/AbstractHttpClientServiceProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.util.LinkedHashMap; import java.util.List; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServiceProperties.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServiceProperties.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServiceProperties.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServiceProperties.java index 74b6055cb7..5e94844d45 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServiceProperties.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServiceProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.util.LinkedHashMap; import java.util.Map; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfiguration.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfiguration.java similarity index 94% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfiguration.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfiguration.java index ff8e3f616c..d025f06fe5 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.ObjectProvider; @@ -26,9 +26,9 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.client.autoconfigure.HttpClientProperties; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.RestClientCustomizer; +import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.web.client.support.RestClientAdapter; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/NotReactiveWebApplicationCondition.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/NotReactiveWebApplicationCondition.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/NotReactiveWebApplicationCondition.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/NotReactiveWebApplicationCondition.java index 203b7f1377..6ed7e24f1c 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/NotReactiveWebApplicationCondition.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/NotReactiveWebApplicationCondition.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.NoneNestedConditions; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java index 90fd0b2830..fa431f84f1 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.web.client.RestClient; import org.springframework.web.client.support.RestClientHttpServiceGroupConfigurer; import org.springframework.web.service.registry.HttpServiceGroup; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java similarity index 98% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java index b46e17a712..9457146d7e 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.util.List; import java.util.Map; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/package-info.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/package-info.java similarity index 91% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/package-info.java index dd7257d2c8..7b058cdb6d 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/package-info.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/package-info.java @@ -17,4 +17,4 @@ /** * Auto-Configuration for Spring's Blocking HTTP Service Interface Clients. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; diff --git a/spring-boot-project/spring-boot-restclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-restclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000000..be5538d040 --- /dev/null +++ b/spring-boot-project/spring-boot-restclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,3 @@ +org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration +org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration +org.springframework.boot.restclient.service.autoconfigure.HttpServiceClientAutoConfiguration diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializerTests.java similarity index 98% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializerTests.java index 4a206f734a..42812f6829 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.util.Arrays; import java.util.Collections; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderTests.java similarity index 97% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderTests.java index 08b4335719..3042a6cd3f 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.net.URI; import java.nio.charset.StandardCharsets; @@ -22,7 +22,6 @@ import java.time.Duration; import java.util.Arrays; import java.util.Collections; import java.util.Set; -import java.util.function.Function; import java.util.function.Supplier; import org.junit.jupiter.api.Test; @@ -274,14 +273,6 @@ class RestTemplateBuilderTests { .withMessageContaining("requestFactorySupplier' must not be null"); } - @Test - @SuppressWarnings("removal") - void requestFactoryWhenFunctionIsNullShouldThrowException() { - assertThatIllegalArgumentException().isThrownBy(() -> this.builder.requestFactory( - (Function) null)) - .withMessageContaining("'requestFactoryFunction' must not be null"); - } - @Test void requestFactoryShouldApply() { ClientHttpRequestFactory requestFactory = mock(ClientHttpRequestFactory.class); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriBuilderFactoryTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriBuilderFactoryTests.java similarity index 96% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriBuilderFactoryTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriBuilderFactoryTests.java index 4c2cc0e742..2bed24b7ee 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriBuilderFactoryTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriBuilderFactoryTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.net.URI; import java.net.URISyntaxException; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriTemplateHandlerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriTemplateHandlerTests.java similarity index 98% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriTemplateHandlerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriTemplateHandlerTests.java index 66ba9bd72c..fe9a07e088 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriTemplateHandlerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriTemplateHandlerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.net.URI; import java.net.URISyntaxException; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizerTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizerTests.java index 7d77028b76..719de023f6 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizerTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizerTests.java index 349b920fe4..e9bae19008 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSslTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSslTests.java similarity index 98% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSslTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSslTests.java index 59365fa072..5ee1adfdba 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSslTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSslTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.time.Duration; import java.util.function.Consumer; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java index 808b0f5bd8..5cd34d06f1 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.ArrayList; import java.util.Arrays; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfigurationTests.java similarity index 99% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfigurationTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfigurationTests.java index d6b9f22efb..14dfe5867b 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.time.Duration; import java.util.List; @@ -31,12 +31,12 @@ import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.boot.ssl.SslBundle; import org.springframework.boot.ssl.SslBundles; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.SimpleClientHttpRequestFactory; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurerTests.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurerTests.java index b81b0f1d6d..fc1e227c0b 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.List; @@ -25,8 +25,8 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.boot.ssl.SslBundle; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.web.client.RestClient; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfigurationTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfigurationTests.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfigurationTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfigurationTests.java index 16ada90b08..636e05b235 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.Collections; import java.util.List; @@ -26,12 +26,12 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateRequestCustomizer; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateRequestCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServicePropertiesTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServicePropertiesTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServicePropertiesTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServicePropertiesTests.java index e3f38f3411..c4d611cf02 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServicePropertiesTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServicePropertiesTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.time.Duration; import java.util.List; @@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.autoconfigure.AbstractHttpRequestFactoryProperties.Factory; -import org.springframework.boot.http.client.service.autoconfigure.HttpClientServiceProperties.Group; +import org.springframework.boot.restclient.service.autoconfigure.HttpClientServiceProperties.Group; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.mock.env.MockEnvironment; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java index 901d9830e3..b2375a50b0 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; @@ -32,9 +32,9 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.RestClientCustomizer; +import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-security/build.gradle b/spring-boot-project/spring-boot-security/build.gradle index 6346a91d75..9623b1f832 100644 --- a/spring-boot-project/spring-boot-security/build.gradle +++ b/spring-boot-project/spring-boot-security/build.gradle @@ -37,6 +37,7 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-http-converter")) testImplementation(project(":spring-boot-project:spring-boot-jackson")) testImplementation(project(":spring-boot-project:spring-boot-jpa")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-rsocket")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tomcat")) diff --git a/spring-boot-project/spring-boot-starters/spring-boot-starter-test/build.gradle b/spring-boot-project/spring-boot-starters/spring-boot-starter-test/build.gradle index 3158d769ec..779b85c128 100644 --- a/spring-boot-project/spring-boot-starters/spring-boot-starter-test/build.gradle +++ b/spring-boot-project/spring-boot-starters/spring-boot-starter-test/build.gradle @@ -5,12 +5,13 @@ plugins { description = "Starter for testing Spring Boot applications with libraries including JUnit Jupiter, Hamcrest and Mockito" dependencies { - api(project(":spring-boot-project:spring-boot-http-client")) - api(project(":spring-boot-project:spring-boot-http-client-reactive")) + api(project(":spring-boot-project:spring-boot-restclient")) + api(project(":spring-boot-project:spring-boot-restclient-test")) api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter")) api(project(":spring-boot-project:spring-boot-test")) api(project(":spring-boot-project:spring-boot-test-autoconfigure")) api(project(":spring-boot-project:spring-boot-web-server-test")) + api(project(":spring-boot-project:spring-boot-webclient")) api("com.jayway.jsonpath:json-path") api("jakarta.xml.bind:jakarta.xml.bind-api") api("net.minidev:json-smart") diff --git a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle index 7075ba86cf..242d6238a1 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle @@ -61,8 +61,6 @@ dependencies { optional(project(":spring-boot-project:spring-boot-groovy-templates")) optional(project(":spring-boot-project:spring-boot-hateoas")) optional(project(":spring-boot-project:spring-boot-http-converter")) - optional(project(":spring-boot-project:spring-boot-http-client")) - optional(project(":spring-boot-project:spring-boot-http-client-reactive")) optional(project(":spring-boot-project:spring-boot-http-codec")) optional(project(":spring-boot-project:spring-boot-jackson")) optional(project(":spring-boot-project:spring-boot-jdbc")) @@ -74,6 +72,8 @@ dependencies { optional(project(":spring-boot-project:spring-boot-mongodb")) optional(project(":spring-boot-project:spring-boot-r2dbc")) optional(project(":spring-boot-project:spring-boot-reactor-netty")) + optional(project(":spring-boot-project:spring-boot-restclient")) + optional(project(":spring-boot-project:spring-boot-restclient-test")) optional(project(":spring-boot-project:spring-boot-security")) optional(project(":spring-boot-project:spring-boot-security-oauth2-client")) optional(project(":spring-boot-project:spring-boot-security-oauth2-resource-server")) @@ -81,6 +81,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-tx")) optional(project(":spring-boot-project:spring-boot-validation")) optional(project(":spring-boot-project:spring-boot-web-server-test")) + optional(project(":spring-boot-project:spring-boot-webclient")) optional(project(":spring-boot-project:spring-boot-webflux")) optional(project(":spring-boot-project:spring-boot-webmvc")) optional(project(":spring-boot-project:spring-boot-webservices")) diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServer.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServer.java index 60c7d13bdc..85eba49cea 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServer.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -24,10 +24,10 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.boot.test.autoconfigure.properties.PropertyMapping; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestClient.Builder; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.java index 83d8c7789b..78fe00db29 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -24,9 +24,9 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.autoconfigure.json.AutoConfigureJson; import org.springframework.boot.test.autoconfigure.properties.PropertyMapping; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.web.client.RestTemplate; /** diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/MockRestServiceServerAutoConfiguration.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/MockRestServiceServerAutoConfiguration.java index 9743088e10..9fa4152fd3 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/MockRestServiceServerAutoConfiguration.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/MockRestServiceServerAutoConfiguration.java @@ -24,8 +24,9 @@ import java.util.Map; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpResponse; @@ -47,6 +48,7 @@ import org.springframework.web.client.RestTemplate; * @see AutoConfigureMockRestServiceServer */ @AutoConfiguration +@ConditionalOnClass(MockServerRestTemplateCustomizer.class) @ConditionalOnBooleanProperty("spring.test.webclient.mockrestserviceserver.enabled") public class MockRestServiceServerAutoConfiguration { diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTest.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTest.java index 0801f117ac..9e0b83888f 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTest.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -27,10 +27,10 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration; import org.springframework.boot.test.autoconfigure.core.AutoConfigureCache; import org.springframework.boot.test.autoconfigure.filter.TypeExcludeFilters; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.ComponentScan; import org.springframework.core.annotation.AliasFor; import org.springframework.core.env.Environment; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/WebClientRestTemplateAutoConfiguration.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/WebClientRestTemplateAutoConfiguration.java index ee440d9fe8..2bfe340160 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/WebClientRestTemplateAutoConfiguration.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/WebClientRestTemplateAutoConfiguration.java @@ -18,7 +18,8 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @@ -30,8 +31,9 @@ import org.springframework.web.client.RestTemplate; * @since 1.4.0 * @see AutoConfigureMockRestServiceServer */ -@AutoConfiguration(afterName = "org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration") +@AutoConfiguration(afterName = "org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration") @ConditionalOnBooleanProperty("spring.test.webclient.register-rest-template") +@ConditionalOnClass(RestTemplateBuilder.class) public class WebClientRestTemplateAutoConfiguration { @Bean diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.client.AutoConfigureWebClient.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.client.AutoConfigureWebClient.imports index 083ac41a92..5ae9ead0a8 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.client.AutoConfigureWebClient.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.client.AutoConfigureWebClient.imports @@ -1,7 +1,7 @@ # AutoConfigureWebClient auto-configuration imports -optional:org.springframework.boot.http.client.reactive.web.WebClientAutoConfiguration -optional:org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration -optional:org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration optional:org.springframework.boot.http.codec.autoconfigure.CodecsAutoConfiguration optional:org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration +optional:org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration +optional:org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration +optional:org.springframework.boot.webclient.WebClientAutoConfiguration org.springframework.boot.test.autoconfigure.web.client.WebClientRestTemplateAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AnotherExampleRestTemplateService.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AnotherExampleRestTemplateService.java index a781d7cc80..38579dffb3 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AnotherExampleRestTemplateService.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AnotherExampleRestTemplateService.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -16,7 +16,7 @@ package org.springframework.boot.test.autoconfigure.web.client; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerEnabledFalseIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerEnabledFalseIntegrationTests.java index fc55c4ad99..78397bf23b 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerEnabledFalseIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerEnabledFalseIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -20,8 +20,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.context.ApplicationContext; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerWithRestTemplateRootUriIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerWithRestTemplateRootUriIntegrationTests.java index 7bf66a5090..950b765931 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerWithRestTemplateRootUriIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerWithRestTemplateRootUriIntegrationTests.java @@ -22,8 +22,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.cassandra.autoconfigure.CassandraAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/ExampleRestTemplateService.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/ExampleRestTemplateService.java index 95f5521175..189d3d537b 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/ExampleRestTemplateService.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/ExampleRestTemplateService.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -16,7 +16,7 @@ package org.springframework.boot.test.autoconfigure.web.client; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestNoComponentIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestNoComponentIntegrationTests.java index 3da4654a6b..a46e02c15c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestNoComponentIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestNoComponentIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.context.ApplicationContext; import org.springframework.http.MediaType; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestClientTwoComponentsIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestClientTwoComponentsIntegrationTests.java index 15695607fe..2c6783734e 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestClientTwoComponentsIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestClientTwoComponentsIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -19,7 +19,7 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; import org.springframework.http.MediaType; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateAndRestClientTogetherIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateAndRestClientTogetherIntegrationTests.java index 92edda4ef5..7e99b73cb9 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateAndRestClientTogetherIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateAndRestClientTogetherIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -19,8 +19,8 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.http.MediaType; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateTwoComponentsIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateTwoComponentsIntegrationTests.java index c106df3776..9d524a146e 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateTwoComponentsIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateTwoComponentsIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -19,7 +19,7 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.http.MediaType; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientWithRestTemplateBuilderTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientWithRestTemplateBuilderTests.java index 6a216e114e..b7e2e51f97 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientWithRestTemplateBuilderTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientWithRestTemplateBuilderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -18,7 +18,7 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.junit.jupiter.api.Test; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient.Builder; diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/package-info.java b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/package-info.java deleted file mode 100644 index 61421a647c..0000000000 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/package-info.java +++ /dev/null @@ -1,20 +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. - */ - -/** - * Web client test utilities. - */ -package org.springframework.boot.test.web.client; diff --git a/spring-boot-project/spring-boot-web-server-test/build.gradle b/spring-boot-project/spring-boot-web-server-test/build.gradle index e48823ec67..6252519e8a 100644 --- a/spring-boot-project/spring-boot-web-server-test/build.gradle +++ b/spring-boot-project/spring-boot-web-server-test/build.gradle @@ -14,7 +14,9 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-test")) optional(project(":spring-boot-project:spring-boot-http-codec")) + optional(project(":spring-boot-project:spring-boot-restclient")) optional(project(":spring-boot-project:spring-boot-web-server")) + optional(project(":spring-boot-project:spring-boot-webclient")) optional("jakarta.servlet:jakarta.servlet-api") optional("org.apache.httpcomponents.client5:httpclient5") optional("org.jetbrains.kotlin:kotlin-reflect") diff --git a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/LocalHostUriTemplateHandler.java b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/LocalHostUriTemplateHandler.java index 9976677691..6178c73283 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/LocalHostUriTemplateHandler.java +++ b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/LocalHostUriTemplateHandler.java @@ -16,7 +16,7 @@ package org.springframework.boot.web.server.test.client; -import org.springframework.boot.web.client.RootUriTemplateHandler; +import org.springframework.boot.restclient.RootUriTemplateHandler; import org.springframework.core.env.Environment; import org.springframework.util.Assert; import org.springframework.web.util.DefaultUriBuilderFactory; diff --git a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplate.java b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplate.java index a69413e0cf..3423bdf94e 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplate.java +++ b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplate.java @@ -51,9 +51,9 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.HttpComponentsClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.HttpRedirects; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RootUriTemplateHandler; import org.springframework.boot.ssl.SslBundle; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RootUriTemplateHandler; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -1087,21 +1087,6 @@ public class TestRestTemplate { private final boolean enableRedirects; - /** - * Create a new {@link CustomHttpComponentsClientHttpRequestFactory} instance. - * @param httpClientOptions the {@link HttpClient} options - * @param settings the settings to apply - * @deprecated since 3.4.0 for removal in 4.0.0 in favor of - * {@link #CustomHttpComponentsClientHttpRequestFactory(HttpClientOption[], ClientHttpRequestFactorySettings)} - */ - @Deprecated(since = "3.4.0", forRemoval = true) - @SuppressWarnings("removal") - public CustomHttpComponentsClientHttpRequestFactory(HttpClientOption[] httpClientOptions, - org.springframework.boot.web.client.ClientHttpRequestFactorySettings settings) { - this(httpClientOptions, new ClientHttpRequestFactorySettings(null, settings.connectTimeout(), - settings.readTimeout(), settings.sslBundle())); - } - /** * Create a new {@link CustomHttpComponentsClientHttpRequestFactory} instance. * @param httpClientOptions the {@link HttpClient} options diff --git a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizer.java b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizer.java index 7ff8fdf916..c00584da38 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizer.java +++ b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizer.java @@ -29,8 +29,8 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.beans.factory.support.RootBeanDefinition; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.AbstractConfigurableWebServerFactory; import org.springframework.boot.web.server.test.client.TestRestTemplate.HttpClientOption; import org.springframework.context.ApplicationContext; diff --git a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizerFactory.java b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizerFactory.java index 1531cca436..96dd0dde93 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizerFactory.java +++ b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizerFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2025 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,6 +23,7 @@ import org.springframework.test.context.ContextConfigurationAttributes; import org.springframework.test.context.ContextCustomizer; import org.springframework.test.context.ContextCustomizerFactory; import org.springframework.test.context.TestContextAnnotationUtils; +import org.springframework.util.ClassUtils; /** * {@link ContextCustomizerFactory} for {@link TestRestTemplate}. @@ -32,9 +33,16 @@ import org.springframework.test.context.TestContextAnnotationUtils; */ class TestRestTemplateContextCustomizerFactory implements ContextCustomizerFactory { + private static final boolean REST_TEMPLATE_BUILDER_PRESENT = ClassUtils.isPresent( + "org.springframework.boot.restclient.RestTemplateBuilder", + TestRestTemplateContextCustomizerFactory.class.getClassLoader()); + @Override public ContextCustomizer createContextCustomizer(Class testClass, List configAttributes) { + if (!REST_TEMPLATE_BUILDER_PRESENT) { + return null; + } SpringBootTest springBootTest = TestContextAnnotationUtils.findMergedAnnotation(testClass, SpringBootTest.class); return (springBootTest != null) ? new TestRestTemplateContextCustomizer() : null; diff --git a/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/SpringBootTestWebEnvironmentRandomPortTests.java b/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/SpringBootTestWebEnvironmentRandomPortTests.java index e84af3103f..71d8b3a1d7 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/SpringBootTestWebEnvironmentRandomPortTests.java +++ b/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/SpringBootTestWebEnvironmentRandomPortTests.java @@ -18,9 +18,9 @@ package org.springframework.boot.web.server.test; import org.junit.jupiter.api.Test; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.StringHttpMessageConverter; diff --git a/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/client/TestRestTemplateTests.java b/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/client/TestRestTemplateTests.java index 4eb707c134..a837291feb 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/client/TestRestTemplateTests.java +++ b/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/client/TestRestTemplateTests.java @@ -35,7 +35,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.HttpRedirects; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate.HttpClientOption; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; diff --git a/spring-boot-project/spring-boot-http-client-reactive/build.gradle b/spring-boot-project/spring-boot-webclient/build.gradle similarity index 91% rename from spring-boot-project/spring-boot-http-client-reactive/build.gradle rename to spring-boot-project/spring-boot-webclient/build.gradle index 6525226d94..d39c15d34c 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/build.gradle +++ b/spring-boot-project/spring-boot-webclient/build.gradle @@ -1,15 +1,15 @@ plugins { id "java-library" id "org.springframework.boot.auto-configuration" - id "org.springframework.boot.configuration-properties" id "org.springframework.boot.deployed" id "org.springframework.boot.optional-dependencies" } -description = "Spring Boot Reactive HTTP Client" +description = "Spring Boot WebClient" dependencies { api(project(":spring-boot-project:spring-boot")) + api(project(":spring-boot-project:spring-boot-http-client")) api("org.springframework:spring-web") implementation(project(":spring-boot-project:spring-boot-http-codec")) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/WebClientCustomizer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/WebClientCustomizer.java similarity index 95% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/WebClientCustomizer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/WebClientCustomizer.java index f7c5d07235..fb82d59f80 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/WebClientCustomizer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/WebClientCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.reactive.function.client; +package org.springframework.boot.webclient; import org.springframework.web.reactive.function.client.WebClient; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizer.java similarity index 91% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizer.java index 82e20da859..582b385415 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizer.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.actuate.observation; +package org.springframework.boot.webclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.web.reactive.function.client.ClientRequestObservationConvention; import org.springframework.web.reactive.function.client.WebClient; @@ -27,7 +27,7 @@ import org.springframework.web.reactive.function.client.WebClient; * observations. * * @author Brian Clozel - * @since 3.0.0 + * @since 4.0.0 */ public class ObservationWebClientCustomizer implements WebClientCustomizer { diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/package-info.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/package-info.java similarity index 89% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/package-info.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/package-info.java index ab1929d849..4c48bf40ce 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/package-info.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/package-info.java @@ -17,4 +17,4 @@ /** * Observation integration for WebClient. */ -package org.springframework.boot.http.client.reactive.web.actuate.observation; +package org.springframework.boot.webclient.actuate.observation; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/AutoConfiguredWebClientSsl.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/AutoConfiguredWebClientSsl.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/AutoConfiguredWebClientSsl.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/AutoConfiguredWebClientSsl.java index 0168f671ee..3281f4ca5d 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/AutoConfiguredWebClientSsl.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/AutoConfiguredWebClientSsl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import java.util.function.Consumer; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfiguration.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfiguration.java similarity index 95% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfiguration.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfiguration.java index 1fc4137b36..488164c05e 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.config.ConfigurableBeanFactory; @@ -29,7 +29,7 @@ import org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpCon import org.springframework.boot.http.codec.CodecCustomizer; import org.springframework.boot.http.codec.autoconfigure.CodecsAutoConfiguration; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; @@ -48,7 +48,7 @@ import org.springframework.web.reactive.function.client.WebClient; * * @author Brian Clozel * @author Phillip Webb - * @since 2.0.0 + * @since 4.0.0 */ @AutoConfiguration(after = { ClientHttpConnectorAutoConfiguration.class, CodecsAutoConfiguration.class }) @ConditionalOnClass(WebClient.class) diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientCodecCustomizer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientCodecCustomizer.java similarity index 88% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientCodecCustomizer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientCodecCustomizer.java index 309d99e547..012e341a42 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientCodecCustomizer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientCodecCustomizer.java @@ -14,19 +14,19 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import java.util.List; import org.springframework.boot.http.codec.CodecCustomizer; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.web.reactive.function.client.WebClient; /** * {@link WebClientCustomizer} that configures codecs for the HTTP client. * * @author Brian Clozel - * @since 2.0.0 + * @since 4.0.0 */ public class WebClientCodecCustomizer implements WebClientCustomizer { diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientSsl.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientSsl.java similarity index 94% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientSsl.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientSsl.java index 7e083e7965..184eee5a75 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientSsl.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientSsl.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import java.util.function.Consumer; @@ -38,7 +38,7 @@ import org.springframework.web.reactive.function.client.WebClient; * {@link WebClient.Builder#clientConnector configured} {@link ClientHttpConnector}. * * @author Phillip Webb - * @since 3.1.0 + * @since 4.0.0 */ public interface WebClientSsl { diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/package-info.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/package-info.java similarity index 83% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/package-info.java index 74133c3da3..51c507278c 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/package-info.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2025 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. @@ -17,4 +17,4 @@ /** * Auto-configuration for Spring Framework's functional web client. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/package-info.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/package-info.java similarity index 91% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/package-info.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/package-info.java index a4ac6696b8..16269da5ab 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/package-info.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/package-info.java @@ -17,4 +17,4 @@ /** * Spring WebFlux WebClient support abstractions. */ -package org.springframework.boot.web.reactive.function.client; +package org.springframework.boot.webclient; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java similarity index 95% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java index 900f3e6d9d..eeb1a71657 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.util.LinkedHashMap; import java.util.List; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServiceProperties.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServiceProperties.java similarity index 95% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServiceProperties.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServiceProperties.java index c427a04df8..ba7669b932 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServiceProperties.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServiceProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.util.LinkedHashMap; import java.util.Map; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java similarity index 93% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java index 2f98e278d7..777ae99eb0 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.ObjectProvider; @@ -26,9 +26,9 @@ import org.springframework.boot.http.client.reactive.ClientHttpConnectorBuilder; import org.springframework.boot.http.client.reactive.ClientHttpConnectorSettings; import org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpConnectorAutoConfiguration; import org.springframework.boot.http.client.reactive.autoconfigure.HttpReactiveClientProperties; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.web.reactive.function.client.support.WebClientAdapter; import org.springframework.web.service.registry.HttpServiceProxyRegistry; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java similarity index 86% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java index c3f2ecd170..601de82251 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java @@ -14,11 +14,10 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.web.client.RestClientCustomizer; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.web.client.RestClient; import org.springframework.web.client.support.RestClientHttpServiceGroupConfigurer; import org.springframework.web.reactive.function.client.WebClient; @@ -27,7 +26,7 @@ import org.springframework.web.service.registry.HttpServiceGroup; /** * A {@link RestClientHttpServiceGroupConfigurer} to apply auto-configured - * {@link RestClientCustomizer} beans to the group's {@link RestClient}. + * {@link WebClientCustomizer} beans to the group's {@link RestClient}. * * @author Olga Maciaszek-Sharma * @author Phillip Webb diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java similarity index 98% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java index c4c3a43ba9..02574162e4 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.util.List; import java.util.Map; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/package-info.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/package-info.java similarity index 90% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/package-info.java index 601ded6188..5d9c18e598 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/package-info.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/package-info.java @@ -17,4 +17,4 @@ /** * Auto-Configuration for Spring's Reactive HTTP Service Interface Clients. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; diff --git a/spring-boot-project/spring-boot-webclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-webclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000000..7566511fc8 --- /dev/null +++ b/spring-boot-project/spring-boot-webclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration +org.springframework.boot.webclient.service.autoconfigure.ReactiveHttpServiceClientAutoConfiguration diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizerTests.java b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizerTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizerTests.java rename to spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizerTests.java index 1bb4b9f35c..63f7816926 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.actuate.observation; +package org.springframework.boot.webclient.actuate.observation; import io.micrometer.observation.tck.TestObservationRegistry; import org.junit.jupiter.api.Test; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfigurationTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfigurationTests.java rename to spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfigurationTests.java index d821cedcf0..3ec868211b 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import org.junit.jupiter.api.Test; @@ -22,7 +22,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration; import org.springframework.boot.http.codec.CodecCustomizer; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.codec.CodecConfigurer; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java rename to spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java index cfee10eee2..095307890f 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java +++ b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.time.Duration; import java.util.List; @@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.reactive.autoconfigure.AbstractClientHttpConnectorProperties.Connector; -import org.springframework.boot.http.client.reactive.service.autoconfigure.ReactiveHttpClientServiceProperties.Group; +import org.springframework.boot.webclient.service.autoconfigure.ReactiveHttpClientServiceProperties.Group; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.mock.env.MockEnvironment; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java similarity index 97% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java rename to spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java index 51c3124da6..908b232b55 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; @@ -32,9 +32,9 @@ import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.reactive.ClientHttpConnectorBuilder; import org.springframework.boot.http.client.reactive.ClientHttpConnectorSettings; import org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpConnectorAutoConfiguration; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/resources/org/springframework/boot/web/client/test.jks b/spring-boot-project/spring-boot-webclient/src/test/resources/org/springframework/boot/http/client/reactive/test.jks similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/resources/org/springframework/boot/web/client/test.jks rename to spring-boot-project/spring-boot-webclient/src/test/resources/org/springframework/boot/http/client/reactive/test.jks diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/resources/org/springframework/boot/http/client/reactive/web/autoconfigure/test.jks b/spring-boot-project/spring-boot-webclient/src/test/resources/org/springframework/boot/http/client/reactive/web/autoconfigure/test.jks similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/resources/org/springframework/boot/http/client/reactive/web/autoconfigure/test.jks rename to spring-boot-project/spring-boot-webclient/src/test/resources/org/springframework/boot/http/client/reactive/web/autoconfigure/test.jks diff --git a/spring-boot-project/spring-boot-webmvc/build.gradle b/spring-boot-project/spring-boot-webmvc/build.gradle index a4bed6715e..d61ee7573a 100644 --- a/spring-boot-project/spring-boot-webmvc/build.gradle +++ b/spring-boot-project/spring-boot-webmvc/build.gradle @@ -22,6 +22,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-web-server")) testImplementation(project(":spring-boot-project:spring-boot-freemarker")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tomcat")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-webservices/build.gradle b/spring-boot-project/spring-boot-webservices/build.gradle index 835b7bf83f..c42c5fff8f 100644 --- a/spring-boot-project/spring-boot-webservices/build.gradle +++ b/spring-boot-project/spring-boot-webservices/build.gradle @@ -10,6 +10,7 @@ description = "Spring Boot Web Services" dependencies { api(project(":spring-boot-project:spring-boot")) + api(project(":spring-boot-project:spring-boot-http-client")) api("org.springframework:spring-oxm") api("org.springframework.ws:spring-ws-core") diff --git a/spring-boot-project/spring-boot/build.gradle b/spring-boot-project/spring-boot/build.gradle index 1c3a316616..a4ab87ab0f 100644 --- a/spring-boot-project/spring-boot/build.gradle +++ b/spring-boot-project/spring-boot/build.gradle @@ -19,22 +19,19 @@ dependencies { optional("ch.qos.logback:logback-classic") optional("com.fasterxml.jackson.core:jackson-databind") optional("com.google.code.gson:gson") + optional("io.projectreactor:reactor-core") optional("jakarta.servlet:jakarta.servlet-api") optional("jakarta.validation:jakarta.validation-api") - optional("io.projectreactor.netty:reactor-netty-http") optional("org.apache.groovy:groovy") - optional("org.apache.httpcomponents.client5:httpclient5") optional("org.apache.logging.log4j:log4j-api") optional("org.apache.logging.log4j:log4j-core") optional("org.apache.logging.log4j:log4j-jul") optional("org.crac:crac") - optional("org.eclipse.jetty:jetty-client") optional("org.jetbrains.kotlin:kotlin-reflect") optional("org.jetbrains.kotlin:kotlin-stdlib") optional("org.slf4j:jul-to-slf4j") optional("org.springframework:spring-test") - optional("org.springframework:spring-webflux") - optional("org.springframework:spring-webmvc") + optional("org.springframework:spring-web") optional("org.yaml:snakeyaml") testFixturesCompileOnly(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactories.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactories.java deleted file mode 100644 index 2664f24412..0000000000 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactories.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2012-2025 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.web.client; - -import java.util.function.Supplier; - -import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; -import org.springframework.boot.http.client.JdkClientHttpRequestFactoryBuilder; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.http.client.JdkClientHttpRequestFactory; -import org.springframework.http.client.JettyClientHttpRequestFactory; -import org.springframework.http.client.ReactorClientHttpRequestFactory; -import org.springframework.http.client.SimpleClientHttpRequestFactory; -import org.springframework.util.Assert; -import org.springframework.util.ClassUtils; - -/** - * Utility class that can be used to create {@link ClientHttpRequestFactory} instances - * configured using given {@link ClientHttpRequestFactorySettings}. - * - * @author Andy Wilkinson - * @author Phillip Webb - * @author Scott Frederick - * @since 3.0.0 - * @deprecated since 3.4.0 for removal in 4.0.0 in favor of - * {@link ClientHttpRequestFactoryBuilder} - */ -@Deprecated(since = "3.4.0", forRemoval = true) -public final class ClientHttpRequestFactories { - - private ClientHttpRequestFactories() { - } - - /** - * Return a {@link ClientHttpRequestFactory} implementation with the given - * {@code settings} applied. The first of the following implementations whose - * dependencies {@link ClassUtils#isPresent are available} is returned: - *
    - *
  1. {@link HttpComponentsClientHttpRequestFactory}
  2. - *
  3. {@link JettyClientHttpRequestFactory}
  4. - *
  5. {@link ReactorClientHttpRequestFactory}
  6. - *
  7. {@link SimpleClientHttpRequestFactory}
  8. - *
- * @param settings the settings to apply - * @return a new {@link ClientHttpRequestFactory} - */ - @SuppressWarnings("removal") - public static ClientHttpRequestFactory get(ClientHttpRequestFactorySettings settings) { - Assert.notNull(settings, "'settings' must not be null"); - return detectBuilder().build(settings.adapt()); - } - - /** - * Return a new {@link ClientHttpRequestFactory} of the given - * {@code requestFactoryType}, applying {@link ClientHttpRequestFactorySettings} using - * reflection if necessary. The following implementations are supported without the - * use of reflection: - *
    - *
  • {@link HttpComponentsClientHttpRequestFactory}
  • - *
  • {@link JdkClientHttpRequestFactory}
  • - *
  • {@link JettyClientHttpRequestFactory}
  • - *
  • {@link ReactorClientHttpRequestFactory}
  • - *
  • {@link SimpleClientHttpRequestFactory}
  • - *
- * A {@code requestFactoryType} of {@link ClientHttpRequestFactory} is equivalent to - * calling {@link #get(ClientHttpRequestFactorySettings)}. - * @param the {@link ClientHttpRequestFactory} type - * @param requestFactoryType the {@link ClientHttpRequestFactory} type - * @param settings the settings to apply - * @return a new {@link ClientHttpRequestFactory} instance - */ - @SuppressWarnings("removal") - public static T get(Class requestFactoryType, - ClientHttpRequestFactorySettings settings) { - Assert.notNull(settings, "'settings' must not be null"); - return getBuilder(requestFactoryType).build(settings.adapt()); - } - - /** - * Return a new {@link ClientHttpRequestFactory} from the given supplier, applying - * {@link ClientHttpRequestFactorySettings} using reflection. - * @param the {@link ClientHttpRequestFactory} type - * @param requestFactorySupplier the {@link ClientHttpRequestFactory} supplier - * @param settings the settings to apply - * @return a new {@link ClientHttpRequestFactory} instance - */ - @SuppressWarnings("removal") - public static T get(Supplier requestFactorySupplier, - ClientHttpRequestFactorySettings settings) { - return ClientHttpRequestFactoryBuilder.of(requestFactorySupplier).build(settings.adapt()); - } - - @SuppressWarnings("unchecked") - private static ClientHttpRequestFactoryBuilder getBuilder( - Class requestFactoryType) { - if (requestFactoryType == ClientHttpRequestFactory.class) { - return (ClientHttpRequestFactoryBuilder) detectBuilder(); - } - return ClientHttpRequestFactoryBuilder.of(requestFactoryType); - } - - private static ClientHttpRequestFactoryBuilder detectBuilder() { - ClientHttpRequestFactoryBuilder builder = ClientHttpRequestFactoryBuilder.detect(); - if (builder instanceof JdkClientHttpRequestFactoryBuilder) { - // Same logic as earlier versions which did not support JDK client factories - return ClientHttpRequestFactoryBuilder.simple(); - } - return builder; - } - -} diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettings.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettings.java deleted file mode 100644 index 36f5adfcae..0000000000 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettings.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2012-2025 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.web.client; - -import java.time.Duration; - -import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; -import org.springframework.boot.ssl.SslBundle; -import org.springframework.http.client.ClientHttpRequestFactory; - -/** - * Settings that can be applied when creating a {@link ClientHttpRequestFactory}. - * - * @param connectTimeout the connect timeout - * @param readTimeout the read timeout - * @param sslBundle the SSL bundle providing SSL configuration - * @author Andy Wilkinson - * @author Phillip Webb - * @author Scott Frederick - * @since 3.0.0 - * @see ClientHttpRequestFactoryBuilder - * @deprecated since 3.4.0 for removal in 4.0.0 in favor of - * {@link org.springframework.boot.http.client.ClientHttpRequestFactorySettings} - */ -@Deprecated(since = "3.4.0", forRemoval = true) -public record ClientHttpRequestFactorySettings(Duration connectTimeout, Duration readTimeout, SslBundle sslBundle) { - - /** - * Use defaults for the {@link ClientHttpRequestFactory} which can differ depending on - * the implementation. - */ - public static final ClientHttpRequestFactorySettings DEFAULTS = new ClientHttpRequestFactorySettings(null, null, - null); - - /** - * Return a new {@link ClientHttpRequestFactorySettings} instance with an updated - * connect timeout setting. - * @param connectTimeout the new connect timeout setting - * @return a new {@link ClientHttpRequestFactorySettings} instance - */ - public ClientHttpRequestFactorySettings withConnectTimeout(Duration connectTimeout) { - return new ClientHttpRequestFactorySettings(connectTimeout, this.readTimeout, this.sslBundle); - } - - /** - * Return a new {@link ClientHttpRequestFactorySettings} instance with an updated read - * timeout setting. - * @param readTimeout the new read timeout setting - * @return a new {@link ClientHttpRequestFactorySettings} instance - */ - - public ClientHttpRequestFactorySettings withReadTimeout(Duration readTimeout) { - return new ClientHttpRequestFactorySettings(this.connectTimeout, readTimeout, this.sslBundle); - } - - /** - * Return a new {@link ClientHttpRequestFactorySettings} instance with an updated SSL - * bundle setting. - * @param sslBundle the new SSL bundle setting - * @return a new {@link ClientHttpRequestFactorySettings} instance - * @since 3.1.0 - */ - public ClientHttpRequestFactorySettings withSslBundle(SslBundle sslBundle) { - return new ClientHttpRequestFactorySettings(this.connectTimeout, this.readTimeout, sslBundle); - } - - org.springframework.boot.http.client.ClientHttpRequestFactorySettings adapt() { - return new org.springframework.boot.http.client.ClientHttpRequestFactorySettings(null, connectTimeout(), - readTimeout(), sslBundle()); - } - - static ClientHttpRequestFactorySettings of( - org.springframework.boot.http.client.ClientHttpRequestFactorySettings settings) { - return new ClientHttpRequestFactorySettings(settings.connectTimeout(), settings.readTimeout(), - settings.sslBundle()); - } - -} diff --git a/spring-boot-project/spring-boot/src/main/resources/META-INF/spring/aot.factories b/spring-boot-project/spring-boot/src/main/resources/META-INF/spring/aot.factories index a39a187175..61390a75be 100644 --- a/spring-boot-project/spring-boot/src/main/resources/META-INF/spring/aot.factories +++ b/spring-boot-project/spring-boot/src/main/resources/META-INF/spring/aot.factories @@ -5,7 +5,6 @@ org.springframework.boot.WebApplicationType$WebApplicationTypeRuntimeHints,\ org.springframework.boot.context.config.ConfigDataLocationRuntimeHints,\ org.springframework.boot.context.config.ConfigDataPropertiesRuntimeHints,\ org.springframework.boot.env.PropertySourceRuntimeHints,\ -org.springframework.boot.http.client.ClientHttpRequestFactoryRuntimeHints,\ org.springframework.boot.json.JacksonRuntimeHints,\ org.springframework.boot.logging.java.JavaLoggingSystemRuntimeHints,\ org.springframework.boot.logging.logback.LogbackRuntimeHints,\ diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesTests.java deleted file mode 100644 index 6a4dc39550..0000000000 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesTests.java +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright 2012-2025 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.web.client; - -import java.net.URI; -import java.time.Duration; - -import org.junit.jupiter.api.Test; - -import org.springframework.http.HttpMethod; -import org.springframework.http.client.BufferingClientHttpRequestFactory; -import org.springframework.http.client.ClientHttpRequest; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.http.client.JdkClientHttpRequestFactory; -import org.springframework.http.client.ReactorClientHttpRequestFactory; -import org.springframework.http.client.SimpleClientHttpRequestFactory; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatIllegalStateException; - -/** - * Tests for {@link ClientHttpRequestFactories}. - * - * @author Andy Wilkinson - * @deprecated since 3.4.0 for removal in 4.0.0 - */ -@SuppressWarnings("removal") -@Deprecated(since = "3.4.0", forRemoval = true) -class ClientHttpRequestFactoriesTests { - - @Test - void getReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(HttpComponentsClientHttpRequestFactory.class); - } - - @Test - void getOfGeneralTypeReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(ClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(HttpComponentsClientHttpRequestFactory.class); - } - - @Test - void getOfSimpleFactoryReturnsSimpleFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(SimpleClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(SimpleClientHttpRequestFactory.class); - } - - @Test - void getOfHttpComponentsFactoryReturnsHttpComponentsFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(HttpComponentsClientHttpRequestFactory.class, ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(HttpComponentsClientHttpRequestFactory.class); - } - - @Test - void getOfReactorFactoryReturnsReactorFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(ReactorClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(ReactorClientHttpRequestFactory.class); - } - - @Test - void getOfJdkFactoryReturnsJdkFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(JdkClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(JdkClientHttpRequestFactory.class); - } - - @Test - void getOfUnknownTypeCreatesFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(TestClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(TestClientHttpRequestFactory.class); - } - - @Test - void getOfUnknownTypeWithConnectTimeoutCreatesFactoryAndConfiguresConnectTimeout() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(TestClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(60))); - assertThat(requestFactory).isInstanceOf(TestClientHttpRequestFactory.class); - assertThat(((TestClientHttpRequestFactory) requestFactory).connectTimeout) - .isEqualTo(Duration.ofSeconds(60).toMillis()); - } - - @Test - void getOfUnknownTypeWithReadTimeoutCreatesFactoryAndConfiguresReadTimeout() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(TestClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofSeconds(90))); - assertThat(requestFactory).isInstanceOf(TestClientHttpRequestFactory.class); - assertThat(((TestClientHttpRequestFactory) requestFactory).readTimeout) - .isEqualTo(Duration.ofSeconds(90).toMillis()); - } - - @Test - void getOfUnconfigurableTypeWithConnectTimeoutThrows() { - assertThatIllegalStateException() - .isThrownBy(() -> ClientHttpRequestFactories.get(UnconfigurableClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(60)))) - .withMessageContaining("suitable setConnectTimeout method"); - } - - @Test - void getOfUnconfigurableTypeWithReadTimeoutThrows() { - assertThatIllegalStateException() - .isThrownBy(() -> ClientHttpRequestFactories.get(UnconfigurableClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofSeconds(60)))) - .withMessageContaining("suitable setReadTimeout method"); - } - - @Test - void getOfTypeWithDeprecatedConnectTimeoutThrowsWithConnectTimeout() { - assertThatIllegalStateException() - .isThrownBy(() -> ClientHttpRequestFactories.get(DeprecatedMethodsClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(60)))) - .withMessageContaining("setConnectTimeout method marked as deprecated"); - } - - @Test - void getOfTypeWithDeprecatedReadTimeoutThrowsWithReadTimeout() { - assertThatIllegalStateException() - .isThrownBy(() -> ClientHttpRequestFactories.get(DeprecatedMethodsClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofSeconds(60)))) - .withMessageContaining("setReadTimeout method marked as deprecated"); - } - - @Test - void connectTimeoutCanBeConfiguredOnAWrappedRequestFactory() { - SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); - BufferingClientHttpRequestFactory result = ClientHttpRequestFactories.get( - () -> new BufferingClientHttpRequestFactory(requestFactory), - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofMillis(1234))); - assertThat(result).extracting("requestFactory").isSameAs(requestFactory); - assertThat(requestFactory).hasFieldOrPropertyWithValue("connectTimeout", 1234); - } - - @Test - void readTimeoutCanBeConfiguredOnAWrappedRequestFactory() { - SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); - BufferingClientHttpRequestFactory result = ClientHttpRequestFactories.get( - () -> new BufferingClientHttpRequestFactory(requestFactory), - ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofMillis(1234))); - assertThat(result).extracting("requestFactory").isSameAs(requestFactory); - assertThat(requestFactory).hasFieldOrPropertyWithValue("readTimeout", 1234); - } - - @Test - void reflectiveShouldFavorDurationTimeoutMethods() { - IntAndDurationTimeoutsClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get( - IntAndDurationTimeoutsClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(1)) - .withReadTimeout(Duration.ofSeconds(2))); - assertThat((requestFactory).connectTimeout).isZero(); - assertThat((requestFactory).readTimeout).isZero(); - assertThat((requestFactory).connectTimeoutDuration).isEqualTo(Duration.ofSeconds(1)); - assertThat((requestFactory).readTimeoutDuration).isEqualTo(Duration.ofSeconds(2)); - } - - public static class TestClientHttpRequestFactory implements ClientHttpRequestFactory { - - private int connectTimeout; - - private int readTimeout; - - @Override - public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) { - throw new UnsupportedOperationException(); - } - - public void setConnectTimeout(int timeout) { - this.connectTimeout = timeout; - } - - public void setReadTimeout(int timeout) { - this.readTimeout = timeout; - } - - } - - public static class UnconfigurableClientHttpRequestFactory implements ClientHttpRequestFactory { - - @Override - public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) { - throw new UnsupportedOperationException(); - } - - } - - public static class DeprecatedMethodsClientHttpRequestFactory implements ClientHttpRequestFactory { - - @Override - public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) { - throw new UnsupportedOperationException(); - } - - @Deprecated(since = "3.0.0", forRemoval = false) - public void setConnectTimeout(int timeout) { - } - - @Deprecated(since = "3.0.0", forRemoval = false) - public void setReadTimeout(int timeout) { - } - - @Deprecated(since = "3.0.0", forRemoval = false) - public void setBufferRequestBody(boolean bufferRequestBody) { - } - - } - - public static class IntAndDurationTimeoutsClientHttpRequestFactory implements ClientHttpRequestFactory { - - private int readTimeout; - - private int connectTimeout; - - private Duration readTimeoutDuration; - - private Duration connectTimeoutDuration; - - @Override - public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) { - throw new UnsupportedOperationException(); - } - - public void setConnectTimeout(int timeout) { - this.connectTimeout = timeout; - } - - public void setReadTimeout(int timeout) { - this.readTimeout = timeout; - } - - public void setConnectTimeout(Duration timeout) { - this.connectTimeoutDuration = timeout; - } - - public void setReadTimeout(Duration timeout) { - this.readTimeoutDuration = timeout; - } - - } - -} diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettingsTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettingsTests.java deleted file mode 100644 index cd64c80f37..0000000000 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettingsTests.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2012-2025 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.web.client; - -import java.time.Duration; - -import org.junit.jupiter.api.Test; - -import org.springframework.boot.ssl.SslBundle; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; - -/** - * Tests for {@link ClientHttpRequestFactorySettings}. - * - * @author Phillip Webb - * @deprecated since 3.4.0 for removal in 4.0.0 - */ -@SuppressWarnings("removal") -@Deprecated(since = "3.4.0", forRemoval = true) -class ClientHttpRequestFactorySettingsTests { - - private static final Duration ONE_SECOND = Duration.ofSeconds(1); - - @Test - void defaultsHasNullValues() { - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS; - assertThat(settings.connectTimeout()).isNull(); - assertThat(settings.readTimeout()).isNull(); - assertThat(settings.sslBundle()).isNull(); - } - - @Test - void withConnectTimeoutReturnsInstanceWithUpdatedConnectionTimeout() { - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS - .withConnectTimeout(ONE_SECOND); - assertThat(settings.connectTimeout()).isEqualTo(ONE_SECOND); - assertThat(settings.readTimeout()).isNull(); - assertThat(settings.sslBundle()).isNull(); - } - - @Test - void withReadTimeoutReturnsInstanceWithUpdatedReadTimeout() { - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS - .withReadTimeout(ONE_SECOND); - assertThat(settings.connectTimeout()).isNull(); - assertThat(settings.readTimeout()).isEqualTo(ONE_SECOND); - assertThat(settings.sslBundle()).isNull(); - } - - @Test - void withSslBundleReturnsInstanceWithUpdatedSslBundle() { - SslBundle sslBundle = mock(SslBundle.class); - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS.withSslBundle(sslBundle); - assertThat(settings.connectTimeout()).isNull(); - assertThat(settings.readTimeout()).isNull(); - assertThat(settings.sslBundle()).isSameAs(sslBundle); - } - -} diff --git a/spring-boot-system-tests/spring-boot-deployment-tests/src/systemTest/java/org/springframework/boot/deployment/AbstractDeploymentTests.java b/spring-boot-system-tests/spring-boot-deployment-tests/src/systemTest/java/org/springframework/boot/deployment/AbstractDeploymentTests.java index bf593753b6..e9ebb804df 100644 --- a/spring-boot-system-tests/spring-boot-deployment-tests/src/systemTest/java/org/springframework/boot/deployment/AbstractDeploymentTests.java +++ b/spring-boot-system-tests/spring-boot-deployment-tests/src/systemTest/java/org/springframework/boot/deployment/AbstractDeploymentTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -31,7 +31,7 @@ import org.testcontainers.containers.GenericContainer; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.images.builder.dockerfile.DockerfileBuilder; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/build.gradle b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/build.gradle index 901b4152c4..0d17b77875 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/build.gradle +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/build.gradle @@ -11,7 +11,7 @@ configurations { dependencies { app project(path: ":spring-boot-project:spring-boot-dependencies", configuration: "mavenRepository") - app project(path: ":spring-boot-project:spring-boot-http-client", configuration: "mavenRepository") + app project(path: ":spring-boot-project:spring-boot-restclient", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-actuator", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat", configuration: "mavenRepository") diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/build.gradle b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/build.gradle index 4a090cb506..be1e84d596 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/build.gradle +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/build.gradle @@ -17,6 +17,6 @@ repositories { dependencies { implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) - implementation("org.springframework.boot:spring-boot-http-client") + implementation("org.springframework.boot:spring-boot-restclient") implementation("org.springframework.boot:spring-boot-starter-web") } diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/SniClientApplication.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/SniClientApplication.java index 49e6fc867c..302447cc4b 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/SniClientApplication.java +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/SniClientApplication.java @@ -22,7 +22,7 @@ import org.springframework.boot.CommandLineRunner; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl; +import org.springframework.boot.restclient.autoconfigure.RestClientSsl; import org.springframework.context.annotation.Bean; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/test/java/smoketest/actuator/customsecurity/CorsSampleActuatorApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/test/java/smoketest/actuator/customsecurity/CorsSampleActuatorApplicationTests.java index f2f3902cd4..82dcdd7d87 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/test/java/smoketest/actuator/customsecurity/CorsSampleActuatorApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/test/java/smoketest/actuator/customsecurity/CorsSampleActuatorApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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,8 +23,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.LocalHostUriTemplateHandler; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.context.ApplicationContext; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-extension/src/test/java/smoketest/actuator/extension/SampleActuatorExtensionApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-extension/src/test/java/smoketest/actuator/extension/SampleActuatorExtensionApplicationTests.java index 3bb0a0d41b..e0191db643 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-extension/src/test/java/smoketest/actuator/extension/SampleActuatorExtensionApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-extension/src/test/java/smoketest/actuator/extension/SampleActuatorExtensionApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -21,9 +21,9 @@ import java.util.Map; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.LocalHostUriTemplateHandler; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.core.env.Environment; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/src/test/java/smoketest/actuator/CorsSampleActuatorApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/src/test/java/smoketest/actuator/CorsSampleActuatorApplicationTests.java index fc581ccbcd..c6aefba1e0 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/src/test/java/smoketest/actuator/CorsSampleActuatorApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/src/test/java/smoketest/actuator/CorsSampleActuatorApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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,8 +23,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.LocalHostUriTemplateHandler; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.context.ApplicationContext; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-jdbc/src/test/java/smoketest/session/SampleSessionJdbcApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-jdbc/src/test/java/smoketest/session/SampleSessionJdbcApplicationTests.java index 74a8565e2b..ea5a962497 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-jdbc/src/test/java/smoketest/session/SampleSessionJdbcApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-jdbc/src/test/java/smoketest/session/SampleSessionJdbcApplicationTests.java @@ -27,8 +27,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.HttpRedirects; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.LocalServerPort; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.core.ParameterizedTypeReference; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle index ceb988cf83..26436f6d5e 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle @@ -5,6 +5,7 @@ plugins { description = "Spring Boot Test smoke test" dependencies { + implementation(project(":spring-boot-project:spring-boot-restclient")) implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-jpa")) implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/src/main/java/smoketest/test/service/RemoteVehicleDetailsService.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/src/main/java/smoketest/test/service/RemoteVehicleDetailsService.java index 528b612a29..c94a6924c9 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/src/main/java/smoketest/test/service/RemoteVehicleDetailsService.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/src/main/java/smoketest/test/service/RemoteVehicleDetailsService.java @@ -20,7 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import smoketest.test.domain.VehicleIdentificationNumber; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.util.Assert; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-testng/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-testng/build.gradle index 4f6f7801c0..0dd23edc83 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-testng/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-testng/build.gradle @@ -11,6 +11,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat")) implementation(project(":spring-boot-project:spring-boot-webmvc")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-web-server-test")) testImplementation("org.assertj:assertj-core")