Remove Netty4 auto-configuration in RestTemplate
This commit removes the automatic configuration of the Netty request factory in RestTemplateBuilder, for the following reasons: * as of Spring 5, `Netty4ClientHttpRequestFactory` is now deprecated * there are quite a few issues logged in Spring Framework (duplicate headers, such as SPR-15446 and SPR-15476) * by default, the `Netty4ClientHttpRequestFactory` is adding a "Connection: close" request header to all outgoing requests, which means that the underlying HTTP connection won't be reused between requests (which is a performance problem) In that case, using any other request factory is a better choice for Spring Boot 2.0+. Note that the `RestTemplateBuilder` still allows to provide it manually with the request factory to use. Developers can still choose this option and will be aware of its deprecation status. Fixes gh-9150
This commit is contained in:
parent
4a47c1eff8
commit
c84204bc81
|
|
@ -321,11 +321,6 @@
|
||||||
<artifactId>mariadb-java-client</artifactId>
|
<artifactId>mariadb-java-client</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>io.netty</groupId>
|
|
||||||
<artifactId>netty-all</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.postgresql</groupId>
|
<groupId>org.postgresql</groupId>
|
||||||
<artifactId>postgresql</artifactId>
|
<artifactId>postgresql</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -72,8 +72,6 @@ public class RestTemplateBuilder {
|
||||||
"org.springframework.http.client.OkHttp3ClientHttpRequestFactory");
|
"org.springframework.http.client.OkHttp3ClientHttpRequestFactory");
|
||||||
candidates.put("com.squareup.okhttp.OkHttpClient",
|
candidates.put("com.squareup.okhttp.OkHttpClient",
|
||||||
"org.springframework.http.client.OkHttpClientHttpRequestFactory");
|
"org.springframework.http.client.OkHttpClientHttpRequestFactory");
|
||||||
candidates.put("io.netty.channel.EventLoopGroup",
|
|
||||||
"org.springframework.http.client.Netty4ClientHttpRequestFactory");
|
|
||||||
REQUEST_FACTORY_CANDIDATES = Collections.unmodifiableMap(candidates);
|
REQUEST_FACTORY_CANDIDATES = Collections.unmodifiableMap(candidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@ import org.springframework.http.client.BufferingClientHttpRequestFactory;
|
||||||
import org.springframework.http.client.ClientHttpRequestFactory;
|
import org.springframework.http.client.ClientHttpRequestFactory;
|
||||||
import org.springframework.http.client.ClientHttpRequestInterceptor;
|
import org.springframework.http.client.ClientHttpRequestInterceptor;
|
||||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
||||||
import org.springframework.http.client.Netty4ClientHttpRequestFactory;
|
|
||||||
import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
|
import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
|
||||||
import org.springframework.http.client.SimpleClientHttpRequestFactory;
|
import org.springframework.http.client.SimpleClientHttpRequestFactory;
|
||||||
import org.springframework.http.client.support.BasicAuthorizationInterceptor;
|
import org.springframework.http.client.support.BasicAuthorizationInterceptor;
|
||||||
|
|
@ -465,24 +464,6 @@ public class RestTemplateBuilderTests {
|
||||||
.isEqualTo(1234);
|
.isEqualTo(1234);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void connectTimeoutCanBeConfiguredOnNetty4RequestFactory() {
|
|
||||||
ClientHttpRequestFactory requestFactory = this.builder
|
|
||||||
.requestFactory(Netty4ClientHttpRequestFactory.class)
|
|
||||||
.setConnectTimeout(1234).build().getRequestFactory();
|
|
||||||
assertThat(ReflectionTestUtils.getField(requestFactory, "connectTimeout"))
|
|
||||||
.isEqualTo(1234);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void readTimeoutCanBeConfiguredOnNetty4RequestFactory() {
|
|
||||||
ClientHttpRequestFactory requestFactory = this.builder
|
|
||||||
.requestFactory(Netty4ClientHttpRequestFactory.class).setReadTimeout(1234)
|
|
||||||
.build().getRequestFactory();
|
|
||||||
assertThat(ReflectionTestUtils.getField(requestFactory, "readTimeout"))
|
|
||||||
.isEqualTo(1234);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void connectTimeoutCanBeConfiguredOnOkHttp3RequestFactory() {
|
public void connectTimeoutCanBeConfiguredOnOkHttp3RequestFactory() {
|
||||||
ClientHttpRequestFactory requestFactory = this.builder
|
ClientHttpRequestFactory requestFactory = this.builder
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue