Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d98179e

Browse files
committed
Enforce custom string converter in HttpMessageConverters
Prior to this commit, configuring a custom `StringHttpMessageConverter` would be overwritten when the `registerDefaults()` option is enabled. Fixes gh-35563
1 parent 56b082d commit d98179e

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

‎spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,10 @@ List<HttpMessageConverter<?>> getCustomConverters() {
247247

248248
void detectMessageConverters() {
249249
this.byteArrayMessageConverter = new ByteArrayHttpMessageConverter();
250-
this.stringMessageConverter = new StringHttpMessageConverter();
251250

251+
if (this.stringMessageConverter == null) {
252+
this.stringMessageConverter = new StringHttpMessageConverter();
253+
}
252254
if (this.jsonMessageConverter == null) {
253255
if (JACKSON_PRESENT) {
254256
this.jsonMessageConverter = new JacksonJsonHttpMessageConverter();

‎spring-web/src/test/java/org/springframework/http/converter/DefaultHttpMessageConvertersTests.java‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,16 @@ void shouldUseSpecificConverter() {
177177
assertThat(customConverter).isEqualTo(jacksonConverter);
178178
}
179179

180+
@Test
181+
void shouldOverrideStringConverters() {
182+
var stringConverter = new StringHttpMessageConverter();
183+
var converters = HttpMessageConverters.forClient().registerDefaults()
184+
.stringMessageConverter(stringConverter).build();
185+
186+
var actualConverter = findMessageConverter(StringHttpMessageConverter.class, converters);
187+
assertThat(actualConverter).isEqualTo(stringConverter);
188+
}
189+
180190
@Test
181191
void shouldConfigureConverter() {
182192
var customConverter = new CustomHttpMessageConverter();
@@ -271,6 +281,17 @@ void shouldUseSpecificConverter() {
271281
assertThat(customConverter).isEqualTo(jacksonConverter);
272282
}
273283

284+
285+
@Test
286+
void shouldOverrideStringConverters() {
287+
var stringConverter = new StringHttpMessageConverter();
288+
var converters = HttpMessageConverters.forServer().registerDefaults()
289+
.stringMessageConverter(stringConverter).build();
290+
291+
var actualConverter = findMessageConverter(StringHttpMessageConverter.class, converters);
292+
assertThat(actualConverter).isEqualTo(stringConverter);
293+
}
294+
274295
@Test
275296
void shouldConfigureConverter() {
276297
var customConverter = new CustomHttpMessageConverter();

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /