Support for @Beans of type HttpMessageConverter, and Jackson specific details
You can contribute additional HttpMessageConverters by simply adding beans of that type in a Spring Boot context. If a bean you add is of a type that would have been included by default anyway (like MappingJackson2HttpMessageConverter for JSON conversions) then it will replace the default value. A convenience bean is provided of type MessageConverters (always available if you use the default MVC configuration) which has some useful methods to access the default and user-enhanced message converters (useful, for example if you want to manually inject them into a custom RestTemplate). There are also some convenient configuration shortcuts for Jackson2. The smallest change that might work is to just add beans of type Module to your context. They will be registered with the default ObjectMapper and then injected into the default message converter. In addition, if your context contains any beans of type ObjectMapper then all of the Module beans will be registered with all of the mappers.
This commit is contained in:
@@ -40,6 +40,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.web.MessageConverters;
|
||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
|
||||
import org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext;
|
||||
@@ -92,8 +93,11 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public EndpointHandlerAdapter endpointHandlerAdapter() {
|
||||
return new EndpointHandlerAdapter();
|
||||
public EndpointHandlerAdapter endpointHandlerAdapter(
|
||||
final MessageConverters messageConverters) {
|
||||
EndpointHandlerAdapter adapter = new EndpointHandlerAdapter();
|
||||
adapter.setMessageConverters(messageConverters.getMessageConverters());
|
||||
return adapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user