Enforce custom string converter in HttpMessageConverters
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Waiting to run Details
Build and Deploy Snapshot / Verify (push) Blocked by required conditions Details
Deploy Docs / Dispatch docs deployment (push) Waiting to run Details

Prior to this commit, configuring a custom `StringHttpMessageConverter`
would be overwritten when the `registerDefaults()` option is enabled.

Fixes gh-35563
This commit is contained in:
Brian Clozel 2025-10-01 20:18:39 +02:00
parent 56b082dec7
commit d98179e137
2 changed files with 24 additions and 1 deletions

View File

@ -247,8 +247,10 @@ class DefaultHttpMessageConverters implements HttpMessageConverters {
void detectMessageConverters() { void detectMessageConverters() {
this.byteArrayMessageConverter = new ByteArrayHttpMessageConverter(); this.byteArrayMessageConverter = new ByteArrayHttpMessageConverter();
this.stringMessageConverter = new StringHttpMessageConverter();
if (this.stringMessageConverter == null) {
this.stringMessageConverter = new StringHttpMessageConverter();
}
if (this.jsonMessageConverter == null) { if (this.jsonMessageConverter == null) {
if (JACKSON_PRESENT) { if (JACKSON_PRESENT) {
this.jsonMessageConverter = new JacksonJsonHttpMessageConverter(); this.jsonMessageConverter = new JacksonJsonHttpMessageConverter();

View File

@ -177,6 +177,16 @@ class DefaultHttpMessageConvertersTests {
assertThat(customConverter).isEqualTo(jacksonConverter); 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 @Test
void shouldConfigureConverter() { void shouldConfigureConverter() {
var customConverter = new CustomHttpMessageConverter(); var customConverter = new CustomHttpMessageConverter();
@ -271,6 +281,17 @@ class DefaultHttpMessageConvertersTests {
assertThat(customConverter).isEqualTo(jacksonConverter); 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 @Test
void shouldConfigureConverter() { void shouldConfigureConverter() {
var customConverter = new CustomHttpMessageConverter(); var customConverter = new CustomHttpMessageConverter();