Add extendMessageConverters to WebMvcConfigurer
Issue: SPR-12450
This commit is contained in:
@@ -105,6 +105,11 @@ public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {
|
||||
this.configurers.configureMessageConverters(converters);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
this.configurers.extendMessageConverters(converters);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFormatters(FormatterRegistry registry) {
|
||||
this.configurers.addFormatters(registry);
|
||||
|
||||
@@ -629,6 +629,7 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv
|
||||
if (this.messageConverters.isEmpty()) {
|
||||
addDefaultHttpMessageConverters(this.messageConverters);
|
||||
}
|
||||
extendMessageConverters(this.messageConverters);
|
||||
}
|
||||
return this.messageConverters;
|
||||
}
|
||||
@@ -646,6 +647,9 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv
|
||||
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
}
|
||||
|
||||
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a set of default HttpMessageConverter instances to the given list.
|
||||
* Subclasses can call this method from {@link #configureMessageConverters(List)}.
|
||||
|
||||
@@ -53,14 +53,26 @@ public interface WebMvcConfigurer {
|
||||
void addFormatters(FormatterRegistry registry);
|
||||
|
||||
/**
|
||||
* Configure the {@link HttpMessageConverter}s to use in argument resolvers
|
||||
* and return value handlers that support reading and/or writing to the
|
||||
* body of the request and response. If no message converters are added to
|
||||
* the list, default converters are added instead.
|
||||
* Configure the {@link HttpMessageConverter}s to use for reading or writing
|
||||
* to the body of the request or response. If no converters are added, a
|
||||
* default list of converters is registered.
|
||||
* <p><strong>Note</strong> that adding converters to the list, turns off
|
||||
* default converter registration. To simply add a converter without impacting
|
||||
* default registration, consider using the method
|
||||
* {@link #extendMessageConverters(java.util.List)} instead.
|
||||
* @param converters initially an empty list of converters
|
||||
*/
|
||||
void configureMessageConverters(List<HttpMessageConverter<?>> converters);
|
||||
|
||||
/**
|
||||
* A hook for extending or modifying the list of converters after it has been
|
||||
* configured. This may be useful for example to allow default converters to
|
||||
* be registered and then insert a custom converter through this method.
|
||||
* @param converters the list of configured converters to extend.
|
||||
* @since 4.1.3
|
||||
*/
|
||||
void extendMessageConverters(List<HttpMessageConverter<?>> converters);
|
||||
|
||||
/**
|
||||
* Provide a custom {@link Validator} instead of the one created by default.
|
||||
* The default implementation, assuming JSR-303 is on the classpath, is:
|
||||
|
||||
@@ -51,6 +51,14 @@ public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {
|
||||
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>This implementation is empty.
|
||||
*/
|
||||
@Override
|
||||
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>This implementation returns {@code null}
|
||||
|
||||
@@ -78,6 +78,13 @@ class WebMvcConfigurerComposite implements WebMvcConfigurer {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
for (WebMvcConfigurer delegate : this.delegates) {
|
||||
delegate.extendMessageConverters(converters);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
|
||||
for (WebMvcConfigurer delegate : this.delegates) {
|
||||
|
||||
Reference in New Issue
Block a user