Skip to content

Commit ca5bd37

Browse files
committed
Upgrade to Spring Framework 6.1.0-M1
Closes gh-35977 Closes gh-35980
1 parent 4dc0b26 commit ca5bd37

File tree

20 files changed

+78
-129
lines changed

20 files changed

+78
-129
lines changed

buildSrc/build.gradle

+2-7
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,10 @@ new File(new File("$projectDir").parentFile, "gradle.properties").withInputStrea
1414
def properties = new Properties()
1515
properties.load(it)
1616
ext.set("kotlinVersion", properties["kotlinVersion"])
17-
ext.set("springFrameworkVersion", properties["springFrameworkVersion"])
18-
if (properties["springFrameworkVersion"].contains("-")) {
19-
repositories {
20-
maven { url "https://repo.spring.io/milestone" }
21-
maven { url "https://repo.spring.io/snapshot" }
22-
}
23-
}
2417
}
2518

19+
ext.set("springFrameworkVersion", "6.0.10")
20+
2621
sourceCompatibility = 17
2722
targetCompatibility = 17
2823

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx2g -Dfile.encoding=UTF-8
66

77
kotlinVersion=1.8.22
88
nativeBuildToolsVersion=0.9.23
9-
springFrameworkVersion=6.0.10
9+
springFrameworkVersion=6.1.0-M1
1010
tomcatVersion=10.1.10
1111

1212
kotlin.stdlib.default.dependency=false

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/OrderedServerHttpObservationFilter.java

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
*
2929
* @author Moritz Halbritter
3030
*/
31+
@SuppressWarnings({ "deprecation", "removal" })
3132
class OrderedServerHttpObservationFilter extends ServerHttpObservationFilter implements OrderedWebFilter {
3233

3334
private final int order;

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java

-3
Original file line numberDiff line numberDiff line change
@@ -1021,9 +1021,6 @@ public CustomHttpComponentsClientHttpRequestFactory(HttpClientOption[] httpClien
10211021
if (settings.connectTimeout() != null) {
10221022
setConnectTimeout((int) settings.connectTimeout().toMillis());
10231023
}
1024-
if (settings.bufferRequestBody() != null) {
1025-
setBufferRequestBody(settings.bufferRequestBody());
1026-
}
10271024
}
10281025

10291026
private HttpClient createHttpClient(Duration readTimeout, boolean ssl) {

spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/SpringBootContextLoaderTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ private String[] getActiveProfiles(Class<?> testClass) {
255255
private Map<String, Object> getMergedContextConfigurationProperties(Class<?> testClass) {
256256
TestContext context = new ExposedTestContextManager(testClass).getExposedTestContext();
257257
MergedContextConfiguration config = (MergedContextConfiguration) ReflectionTestUtils.getField(context,
258-
"mergedContextConfiguration");
258+
"mergedConfig");
259259
return TestPropertySourceUtils.convertInlinedPropertiesToMap(config.getPropertySourceProperties());
260260
}
261261

spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ private TestContext buildTestContext(Class<?> testClass) {
110110
}
111111

112112
private MergedContextConfiguration getMergedContextConfiguration(TestContext context) {
113-
return (MergedContextConfiguration) ReflectionTestUtils.getField(context, "mergedContextConfiguration");
113+
return (MergedContextConfiguration) ReflectionTestUtils.getField(context, "mergedConfig");
114114
}
115115

116116
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)

spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle

+5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ configurations.all {
1414
if (dependency.requested.group.startsWith("com.fasterxml.jackson")) {
1515
dependency.useVersion("2.14.2")
1616
}
17+
// Downgrade Spring Framework as Gradle cannot cope with 6.1.0-M1's
18+
// multi-version jar files with bytecode in META-INF/versions/21
19+
if (dependency.requested.group.equals("org.springframework")) {
20+
dependency.useVersion("6.0.10")
21+
}
1722
}
1823
}
1924
}

spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle

+5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ configurations {
2323
if (dependency.requested.group.startsWith("com.fasterxml.jackson")) {
2424
dependency.useVersion("2.14.2")
2525
}
26+
// Downgrade Spring Framework as Gradle cannot cope with 6.1.0-M1's
27+
// multi-version jar files with bytecode in META-INF/versions/21
28+
if (dependency.requested.group.equals("org.springframework")) {
29+
dependency.useVersion("6.0.10")
30+
}
2631
}
2732
}
2833
}

spring-boot-project/spring-boot-tools/spring-boot-loader-tools/build.gradle

+11
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@ configurations {
1717
extendsFrom dependencyManagement
1818
transitive = false
1919
}
20+
all {
21+
resolutionStrategy {
22+
eachDependency { dependency ->
23+
// Downgrade Spring Framework as Gradle cannot cope with 6.1.0-M1's
24+
// multi-version jar files with bytecode in META-INF/versions/21
25+
if (dependency.requested.group.equals("org.springframework")) {
26+
dependency.useVersion("6.0.10")
27+
}
28+
}
29+
}
30+
}
2031
}
2132

2233
dependencies {

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactories.java

-11
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ static HttpComponentsClientHttpRequestFactory get(ClientHttpRequestFactorySettin
151151
settings.sslBundle());
152152
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
153153
map.from(settings::connectTimeout).asInt(Duration::toMillis).to(requestFactory::setConnectTimeout);
154-
map.from(settings::bufferRequestBody).to(requestFactory::setBufferRequestBody);
155154
return requestFactory;
156155
}
157156

@@ -187,8 +186,6 @@ private static HttpClient createHttpClient(Duration readTimeout, SslBundle sslBu
187186
static class OkHttp {
188187

189188
static OkHttp3ClientHttpRequestFactory get(ClientHttpRequestFactorySettings settings) {
190-
Assert.state(settings.bufferRequestBody() == null,
191-
() -> "OkHttp3ClientHttpRequestFactory does not support request body buffering");
192189
OkHttp3ClientHttpRequestFactory requestFactory = createRequestFactory(settings.sslBundle());
193190
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
194191
map.from(settings::connectTimeout).asInt(Duration::toMillis).to(requestFactory::setConnectTimeout);
@@ -227,7 +224,6 @@ static SimpleClientHttpRequestFactory get(ClientHttpRequestFactorySettings setti
227224
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
228225
map.from(settings::readTimeout).asInt(Duration::toMillis).to(requestFactory::setReadTimeout);
229226
map.from(settings::connectTimeout).asInt(Duration::toMillis).to(requestFactory::setConnectTimeout);
230-
map.from(settings::bufferRequestBody).to(requestFactory::setBufferRequestBody);
231227
return requestFactory;
232228
}
233229

@@ -274,8 +270,6 @@ private static void configure(ClientHttpRequestFactory requestFactory,
274270
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
275271
map.from(settings::connectTimeout).to((connectTimeout) -> setConnectTimeout(unwrapped, connectTimeout));
276272
map.from(settings::readTimeout).to((readTimeout) -> setReadTimeout(unwrapped, readTimeout));
277-
map.from(settings::bufferRequestBody)
278-
.to((bufferRequestBody) -> setBufferRequestBody(unwrapped, bufferRequestBody));
279273
}
280274

281275
private static ClientHttpRequestFactory unwrapRequestFactoryIfNecessary(
@@ -305,11 +299,6 @@ private static void setReadTimeout(ClientHttpRequestFactory factory, Duration re
305299
invoke(factory, method, timeout);
306300
}
307301

308-
private static void setBufferRequestBody(ClientHttpRequestFactory factory, boolean bufferRequestBody) {
309-
Method method = findMethod(factory, "setBufferRequestBody", boolean.class);
310-
invoke(factory, method, bufferRequestBody);
311-
}
312-
313302
private static Method findMethod(ClientHttpRequestFactory requestFactory, String methodName,
314303
Class<?>... parameters) {
315304
Method method = ReflectionUtils.findMethod(requestFactory.getClass(), methodName, parameters);

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesRuntimeHints.java

-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ private void registerReflectionHints(ReflectionHints hints,
6969
Class<? extends ClientHttpRequestFactory> requestFactoryType) {
7070
registerMethod(hints, requestFactoryType, "setConnectTimeout", int.class);
7171
registerMethod(hints, requestFactoryType, "setReadTimeout", int.class);
72-
registerMethod(hints, requestFactoryType, "setBufferRequestBody", boolean.class);
7372
}
7473

7574
private void registerMethod(ReflectionHints hints, Class<? extends ClientHttpRequestFactory> requestFactoryType,

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettings.java

+40-19
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,14 @@
2626
*
2727
* @param connectTimeout the connect timeout
2828
* @param readTimeout the read timeout
29-
* @param bufferRequestBody if request body buffering is used
3029
* @param sslBundle the SSL bundle providing SSL configuration
3130
* @author Andy Wilkinson
3231
* @author Phillip Webb
3332
* @author Scott Frederick
3433
* @since 3.0.0
3534
* @see ClientHttpRequestFactories
3635
*/
37-
public record ClientHttpRequestFactorySettings(Duration connectTimeout, Duration readTimeout, Boolean bufferRequestBody,
38-
SslBundle sslBundle) {
36+
public record ClientHttpRequestFactorySettings(Duration connectTimeout, Duration readTimeout, SslBundle sslBundle) {
3937

4038
/**
4139
* Use defaults for the {@link ClientHttpRequestFactory} which can differ depending on
@@ -48,15 +46,29 @@ public record ClientHttpRequestFactorySettings(Duration connectTimeout, Duration
4846
* Create a new {@link ClientHttpRequestFactorySettings} instance.
4947
* @param connectTimeout the connection timeout
5048
* @param readTimeout the read timeout
51-
* @param bufferRequestBody the bugger request body
52-
* @param sslBundle the ssl bundle
53-
* @since 3.1.0
49+
* @param bufferRequestBody if request body buffering is used
50+
* @deprecated since 3.2.0 for removal in 3.4.0 as support for buffering has been
51+
* removed in Spring Framework 6.1
5452
*/
55-
public ClientHttpRequestFactorySettings {
53+
@Deprecated(since = "3.2.0", forRemoval = true)
54+
public ClientHttpRequestFactorySettings(Duration connectTimeout, Duration readTimeout, Boolean bufferRequestBody) {
55+
this(connectTimeout, readTimeout, (SslBundle) null);
5656
}
5757

58-
public ClientHttpRequestFactorySettings(Duration connectTimeout, Duration readTimeout, Boolean bufferRequestBody) {
59-
this(connectTimeout, readTimeout, bufferRequestBody, null);
58+
/**
59+
* Create a new {@link ClientHttpRequestFactorySettings} instance.
60+
* @param connectTimeout the connection timeout
61+
* @param readTimeout the read timeout
62+
* @param bufferRequestBody if request body buffering is used
63+
* @param sslBundle the ssl bundle
64+
* @since 3.1.0
65+
* @deprecated since 3.2.0 for removal in 3.4.0 as support for buffering has been
66+
* removed in Spring Framework 6.1
67+
*/
68+
@Deprecated(since = "3.2.0", forRemoval = true)
69+
public ClientHttpRequestFactorySettings(Duration connectTimeout, Duration readTimeout, Boolean bufferRequestBody,
70+
SslBundle sslBundle) {
71+
this(connectTimeout, readTimeout, sslBundle);
6072
}
6173

6274
/**
@@ -66,8 +78,7 @@ public ClientHttpRequestFactorySettings(Duration connectTimeout, Duration readTi
6678
* @return a new {@link ClientHttpRequestFactorySettings} instance
6779
*/
6880
public ClientHttpRequestFactorySettings withConnectTimeout(Duration connectTimeout) {
69-
return new ClientHttpRequestFactorySettings(connectTimeout, this.readTimeout, this.bufferRequestBody,
70-
this.sslBundle);
81+
return new ClientHttpRequestFactorySettings(connectTimeout, this.readTimeout, this.sslBundle);
7182
}
7283

7384
/**
@@ -78,19 +89,19 @@ public ClientHttpRequestFactorySettings withConnectTimeout(Duration connectTimeo
7889
*/
7990

8091
public ClientHttpRequestFactorySettings withReadTimeout(Duration readTimeout) {
81-
return new ClientHttpRequestFactorySettings(this.connectTimeout, readTimeout, this.bufferRequestBody,
82-
this.sslBundle);
92+
return new ClientHttpRequestFactorySettings(this.connectTimeout, readTimeout, this.sslBundle);
8393
}
8494

8595
/**
86-
* Return a new {@link ClientHttpRequestFactorySettings} instance with an updated
87-
* buffer request body setting.
96+
* Has no effect as support for buffering has been removed in Spring Framework 6.1.
8897
* @param bufferRequestBody the new buffer request body setting
8998
* @return a new {@link ClientHttpRequestFactorySettings} instance
99+
* @deprecated since 3.2.0 for removal in 3.4.0 as support for buffering has been
100+
* removed in Spring Framework 6.1
90101
*/
102+
@Deprecated(since = "3.2.0", forRemoval = true)
91103
public ClientHttpRequestFactorySettings withBufferRequestBody(Boolean bufferRequestBody) {
92-
return new ClientHttpRequestFactorySettings(this.connectTimeout, this.readTimeout, bufferRequestBody,
93-
this.sslBundle);
104+
return this;
94105
}
95106

96107
/**
@@ -101,8 +112,18 @@ public ClientHttpRequestFactorySettings withBufferRequestBody(Boolean bufferRequ
101112
* @since 3.1.0
102113
*/
103114
public ClientHttpRequestFactorySettings withSslBundle(SslBundle sslBundle) {
104-
return new ClientHttpRequestFactorySettings(this.connectTimeout, this.readTimeout, this.bufferRequestBody,
105-
sslBundle);
115+
return new ClientHttpRequestFactorySettings(this.connectTimeout, this.readTimeout, sslBundle);
116+
}
117+
118+
/**
119+
* Returns whether request body buffering is used.
120+
* @return whether request body buffering is used
121+
* @deprecated since 3.2.0 for removal in 3.4.0 as support for buffering has been
122+
* removed in Spring Framework 6.1
123+
*/
124+
@Deprecated(since = "3.2.0", forRemoval = true)
125+
public Boolean bufferRequestBody() {
126+
return null;
106127
}
107128

108129
}

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -440,19 +440,18 @@ public RestTemplateBuilder setReadTimeout(Duration readTimeout) {
440440
}
441441

442442
/**
443-
* Sets if the underlying {@link ClientHttpRequestFactory} should buffer the
444-
* {@linkplain ClientHttpRequest#getBody() request body} internally.
443+
* Has no effect as support for buffering has been removed in Spring Framework 6.1.
445444
* @param bufferRequestBody value of the bufferRequestBody parameter
446445
* @return a new builder instance.
447446
* @since 2.2.0
447+
* @deprecated since 3.2.0 for removal in 3.4.0 as support for buffering has been
448+
* removed in Spring Framework 6.1
448449
* @see SimpleClientHttpRequestFactory#setBufferRequestBody(boolean)
449450
* @see HttpComponentsClientHttpRequestFactory#setBufferRequestBody(boolean)
450451
*/
452+
@Deprecated(since = "3.2.0", forRemoval = true)
451453
public RestTemplateBuilder setBufferRequestBody(boolean bufferRequestBody) {
452-
return new RestTemplateBuilder(this.requestFactorySettings.withBufferRequestBody(bufferRequestBody),
453-
this.detectRequestFactory, this.rootUri, this.messageConverters, this.interceptors, this.requestFactory,
454-
this.uriTemplateHandler, this.errorHandler, this.basicAuthentication, this.defaultHeaders,
455-
this.customizers, this.requestCustomizers);
454+
return this;
456455
}
457456

458457
/**

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/webservices/client/HttpWebServiceMessageSenderBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public WebServiceMessageSender build() {
113113

114114
private ClientHttpRequestFactory getRequestFactory() {
115115
ClientHttpRequestFactorySettings settings = new ClientHttpRequestFactorySettings(this.connectTimeout,
116-
this.readTimeout, null, this.sslBundle);
116+
this.readTimeout, this.sslBundle);
117117
return (this.requestFactory != null) ? this.requestFactory.apply(settings)
118118
: ClientHttpRequestFactories.get(settings);
119119
}

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesOkHttp3Tests.java

-7
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.springframework.test.util.ReflectionTestUtils;
2828

2929
import static org.assertj.core.api.Assertions.assertThat;
30-
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
3130

3231
/**
3332
* Tests for {@link ClientHttpRequestFactories} when OkHttp 3 is the predominant HTTP
@@ -50,12 +49,6 @@ void okHttp3IsBeingUsed() {
5049
.startsWith("okhttp-3.");
5150
}
5251

53-
@Test
54-
void getFailsWhenBufferRequestBodyIsEnabled() {
55-
assertThatIllegalStateException().isThrownBy(() -> ClientHttpRequestFactories
56-
.get(ClientHttpRequestFactorySettings.DEFAULTS.withBufferRequestBody(true)));
57-
}
58-
5952
@Override
6053
protected long connectTimeout(OkHttp3ClientHttpRequestFactory requestFactory) {
6154
return ((OkHttpClient) ReflectionTestUtils.getField(requestFactory, "client")).connectTimeoutMillis();

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesOkHttp4Tests.java

-7
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.springframework.test.util.ReflectionTestUtils;
2727

2828
import static org.assertj.core.api.Assertions.assertThat;
29-
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
3029

3130
/**
3231
* Tests for {@link ClientHttpRequestFactories} when OkHttp 4 is the predominant HTTP
@@ -48,12 +47,6 @@ void okHttp4IsBeingUsed() {
4847
.startsWith("okhttp-4.");
4948
}
5049

51-
@Test
52-
void getFailsWhenBufferRequestBodyIsEnabled() {
53-
assertThatIllegalStateException().isThrownBy(() -> ClientHttpRequestFactories
54-
.get(ClientHttpRequestFactorySettings.DEFAULTS.withBufferRequestBody(true)));
55-
}
56-
5750
@Override
5851
protected long connectTimeout(OkHttp3ClientHttpRequestFactory requestFactory) {
5952
return ((OkHttpClient) ReflectionTestUtils.getField(requestFactory, "client")).connectTimeoutMillis();

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesRuntimeHintsTests.java

-9
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,6 @@ void shouldRegisterHttpComponentHints() {
5959
assertThat(reflection
6060
.onMethod(method(HttpComponentsClientHttpRequestFactory.class, "setConnectTimeout", int.class)))
6161
.accepts(hints);
62-
assertThat(
63-
reflection.onMethod(method(HttpComponentsClientHttpRequestFactory.class, "setReadTimeout", int.class)))
64-
.accepts(hints);
65-
assertThat(reflection
66-
.onMethod(method(HttpComponentsClientHttpRequestFactory.class, "setBufferRequestBody", boolean.class)))
67-
.accepts(hints);
6862
}
6963

7064
@Test
@@ -88,9 +82,6 @@ void shouldRegisterSimpleHttpHints() {
8882
.accepts(hints);
8983
assertThat(reflection.onMethod(method(SimpleClientHttpRequestFactory.class, "setReadTimeout", int.class)))
9084
.accepts(hints);
91-
assertThat(reflection
92-
.onMethod(method(SimpleClientHttpRequestFactory.class, "setBufferRequestBody", boolean.class)))
93-
.accepts(hints);
9485
}
9586

9687
private static Method method(Class<?> target, String name, Class<?>... parameterTypes) {

0 commit comments

Comments
 (0)