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 56d67da4f2e..97129ce5628 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 @@ -505,11 +505,11 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { } List> partConverters = new ArrayList<>(this.getCustomConverters()); List> allConverters = new ArrayList<>(this.getCustomConverters()); - if (this.registerDefaults) { - allConverters.addAll(this.getBaseConverters()); - if (this.resourceConverter != null) { - allConverters.add(this.resourceConverter); - } + allConverters.addAll(this.getBaseConverters()); + if (this.resourceConverter != null) { + allConverters.add(this.resourceConverter); + } + if (!this.getCoreConverters().isEmpty()) { // use separate instances of base converters for multipart partConverters.addAll(List.of(new ByteArrayHttpMessageConverter(), new StringHttpMessageConverter(), new ResourceHttpMessageConverter())); @@ -518,9 +518,7 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { if (!partConverters.isEmpty() || !allConverters.isEmpty()) { allConverters.add(new MultipartHttpMessageConverter(partConverters)); } - if (this.registerDefaults) { - allConverters.addAll(this.getCoreConverters()); - } + allConverters.addAll(this.getCoreConverters()); if (this.convertersListConfigurer != null) { this.convertersListConfigurer.accept(allConverters); } @@ -641,14 +639,14 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { } List> partConverters = new ArrayList<>(this.getCustomConverters()); List> allConverters = new ArrayList<>(this.getCustomConverters()); - if (this.registerDefaults) { - allConverters.addAll(this.getBaseConverters()); - if (this.resourceConverter != null) { - allConverters.add(this.resourceConverter); - } - if (this.resourceRegionConverter != null) { - allConverters.add(this.resourceRegionConverter); - } + allConverters.addAll(this.getBaseConverters()); + if (this.resourceConverter != null) { + allConverters.add(this.resourceConverter); + } + if (this.resourceRegionConverter != null) { + allConverters.add(this.resourceRegionConverter); + } + if (!this.getCoreConverters().isEmpty()) { // use separate instances of base converters for multipart partConverters.addAll(List.of(new ByteArrayHttpMessageConverter(), new StringHttpMessageConverter(), new ResourceHttpMessageConverter())); @@ -657,9 +655,7 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { if (!partConverters.isEmpty() || !allConverters.isEmpty()) { allConverters.add(new MultipartHttpMessageConverter(partConverters)); } - if (this.registerDefaults) { - allConverters.addAll(this.getCoreConverters()); - } + allConverters.addAll(this.getCoreConverters()); if (this.convertersListConfigurer != null) { this.convertersListConfigurer.accept(allConverters); } 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 0a387f18d01..7c4ccaf8697 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 @@ -186,10 +186,13 @@ class DefaultHttpMessageConvertersTests { } @Test - void shouldNotConfigureOverridesWhenDefaultOff() { + void shouldConfigureOverridesWhenDefaultOff() { var stringConverter = new StringHttpMessageConverter(); var converters = HttpMessageConverters.forClient().withStringConverter(stringConverter).build(); - assertThat(converters).isEmpty(); + assertThat(converters).hasExactlyElementsOfTypes( + StringHttpMessageConverter.class, MultipartHttpMessageConverter.class); + var configured = findMessageConverter(StringHttpMessageConverter.class, converters); + assertThat(configured).isEqualTo(stringConverter); } @Test @@ -320,12 +323,14 @@ class DefaultHttpMessageConvertersTests { assertThat(multipartConverter.getPartConverters()).hasAtLeastOneElementOfType(CustomHttpMessageConverter.class); } - @Test - void shouldNotConfigureOverridesWhenDefaultOff() { + void shouldConfigureOverridesWhenDefaultOff() { var stringConverter = new StringHttpMessageConverter(); var converters = HttpMessageConverters.forServer().withStringConverter(stringConverter).build(); - assertThat(converters).isEmpty(); + assertThat(converters).hasExactlyElementsOfTypes( + StringHttpMessageConverter.class, MultipartHttpMessageConverter.class); + var configured = findMessageConverter(StringHttpMessageConverter.class, converters); + assertThat(configured).isEqualTo(stringConverter); } @Test