Fine-tune default mime type in message broker config

Issue: SPR-11370
This commit is contained in:
Rossen Stoyanchev
2014-01-31 20:51:06 -05:00
parent b6da7e2795
commit f0a53ae54e
2 changed files with 34 additions and 17 deletions

View File

@@ -248,27 +248,44 @@ public abstract class AbstractMessageBrokerConfiguration implements ApplicationC
@Bean
public CompositeMessageConverter brokerMessageConverter() {
List<MessageConverter> converters = new ArrayList<MessageConverter>();
if (configureMessageConverters(converters)) {
boolean registerDefaults = configureMessageConverters(converters);
if (registerDefaults) {
if (jackson2Present) {
converters.add(new MappingJackson2MessageConverter());
}
converters.add(new StringMessageConverter());
converters.add(new ByteArrayMessageConverter());
}
return new CompositeMessageConverter(converters, getContentTypeResolver());
ContentTypeResolver contentTypeResolver = getContentTypeResolver();
if (contentTypeResolver == null) {
contentTypeResolver = new DefaultContentTypeResolver();
if (jackson2Present && registerDefaults) {
((DefaultContentTypeResolver) contentTypeResolver).setDefaultMimeType(MimeTypeUtils.APPLICATION_JSON);
}
}
return new CompositeMessageConverter(converters, contentTypeResolver);
}
/**
* Override this method to add custom message converters.
* @param messageConverters the list to add converters to, initially empty
*
* @return {@code true} if default message converters should be added to list,
* {@code false} if no more converters should be added.
*/
protected boolean configureMessageConverters(List<MessageConverter> messageConverters) {
return true;
}
/**
* Override this method to provide a custom {@link ContentTypeResolver}.
*/
protected ContentTypeResolver getContentTypeResolver() {
DefaultContentTypeResolver contentTypeResolver = new DefaultContentTypeResolver();
if (jackson2Present) {
contentTypeResolver.setDefaultMimeType(MimeTypeUtils.APPLICATION_JSON);
}
return contentTypeResolver;
return null;
}
@Bean