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 8ccb13c3bb1..0bd936c977c 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 @@ -389,6 +389,12 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { return this; } + @Override + public ClientBuilder disableDefaults() { + this.registerDefaults = false; + return this; + } + @Override public ClientBuilder withStringConverter(HttpMessageConverter stringConverter) { setStringConverter(stringConverter); @@ -495,6 +501,12 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { return this; } + @Override + public ServerBuilder disableDefaults() { + this.registerDefaults = false; + return this; + } + @Override public ServerBuilder withStringConverter(HttpMessageConverter stringConverter) { setStringConverter(stringConverter); diff --git a/spring-web/src/main/java/org/springframework/http/converter/HttpMessageConverters.java b/spring-web/src/main/java/org/springframework/http/converter/HttpMessageConverters.java index 254bc359216..c7b96340f0e 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/HttpMessageConverters.java +++ b/spring-web/src/main/java/org/springframework/http/converter/HttpMessageConverters.java @@ -97,6 +97,15 @@ public interface HttpMessageConverters extends Iterable> */ T registerDefaults(); + /** + * Prevent the registration of default converters using classpath detection. + * Manual registrations like {@link #withJsonConverter(HttpMessageConverter)} are + * still allowed. If both {@link #registerDefaults()} and this method are called, + * the latest call wins. + * @since 7.0.4 + */ + T disableDefaults(); + /** * Override the default String {@code HttpMessageConverter} * with any converter supporting String conversion. 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 35a58330df2..a9196ce44c5 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 @@ -125,6 +125,12 @@ class DefaultHttpMessageConvertersTests { RssChannelHttpMessageConverter.class); } + @Test + void disableDefaults() { + var converters = HttpMessageConverters.forClient().registerDefaults().disableDefaults().build(); + assertThat(converters).isEmpty(); + } + @Test void multipartConverterContainsOtherConverters() { var converters = HttpMessageConverters.forClient().registerDefaults().build(); @@ -242,6 +248,12 @@ class DefaultHttpMessageConvertersTests { RssChannelHttpMessageConverter.class); } + @Test + void disableDefaults() { + var converters = HttpMessageConverters.forServer().registerDefaults().disableDefaults().build(); + assertThat(converters).isEmpty(); + } + @Test void multipartConverterContainsOtherConverters() { var converters = HttpMessageConverters.forServer().registerDefaults().build();