mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-17 08:24:13 +00:00
Allow to disable defaults in HttpMessageConverters
The builder for `HttpMessageConverters` allows for auto-detection of message converters on the classpath and their default registration when `registerDefaults()` is called. Once called, there is no way to undo this. This commit adds a new `disableDefaults()` method to disable the default registration and take full control over the list of message converters. Closes gh-36303
This commit is contained in:
+12
@@ -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);
|
||||
|
||||
@@ -97,6 +97,15 @@ public interface HttpMessageConverters extends Iterable<HttpMessageConverter<?>>
|
||||
*/
|
||||
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.
|
||||
|
||||
+12
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user