diff --git a/spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java b/spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java index fa5df2f40e7..fa6f5e1eb1f 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java +++ b/spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java @@ -247,8 +247,10 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { void detectMessageConverters() { this.byteArrayMessageConverter = new ByteArrayHttpMessageConverter(); - this.stringMessageConverter = new StringHttpMessageConverter(); + if (this.stringMessageConverter == null) { + this.stringMessageConverter = new StringHttpMessageConverter(); + } if (this.jsonMessageConverter == null) { if (JACKSON_PRESENT) { this.jsonMessageConverter = new JacksonJsonHttpMessageConverter(); diff --git a/spring-web/src/test/java/org/springframework/http/converter/DefaultHttpMessageConvertersTests.java b/spring-web/src/test/java/org/springframework/http/converter/DefaultHttpMessageConvertersTests.java index fc5028f107f..042ef780eb2 100644 --- a/spring-web/src/test/java/org/springframework/http/converter/DefaultHttpMessageConvertersTests.java +++ b/spring-web/src/test/java/org/springframework/http/converter/DefaultHttpMessageConvertersTests.java @@ -177,6 +177,16 @@ class DefaultHttpMessageConvertersTests { assertThat(customConverter).isEqualTo(jacksonConverter); } + @Test + void shouldOverrideStringConverters() { + var stringConverter = new StringHttpMessageConverter(); + var converters = HttpMessageConverters.forClient().registerDefaults() + .stringMessageConverter(stringConverter).build(); + + var actualConverter = findMessageConverter(StringHttpMessageConverter.class, converters); + assertThat(actualConverter).isEqualTo(stringConverter); + } + @Test void shouldConfigureConverter() { var customConverter = new CustomHttpMessageConverter(); @@ -271,6 +281,17 @@ class DefaultHttpMessageConvertersTests { assertThat(customConverter).isEqualTo(jacksonConverter); } + + @Test + void shouldOverrideStringConverters() { + var stringConverter = new StringHttpMessageConverter(); + var converters = HttpMessageConverters.forServer().registerDefaults() + .stringMessageConverter(stringConverter).build(); + + var actualConverter = findMessageConverter(StringHttpMessageConverter.class, converters); + assertThat(actualConverter).isEqualTo(stringConverter); + } + @Test void shouldConfigureConverter() { var customConverter = new CustomHttpMessageConverter();