Configure MappingJackson2HttpMessageConverter by using java-configuration
13,713
Try the below approach:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
...
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.dateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
}
...
}
Author by
althor
Updated on June 13, 2022Comments
-
althor almost 2 years
I am trying to configure MappingJackson2HttpMessageConverter because I want to disable the WRITE_DATES_TO_TIMESTAMP feature.
If I configure it by xml-configuration it works successfully
<bean name="jacksonObjectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> <property name="featuresToDisable"> <array> <util:constant static-field="com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS" /> </array> </property> </bean> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper" ref="jacksonObjectMapper" /> </bean> </mvc:message-converters> </mvc:annotation-driven>
But when I try to configure through java-configuration the converter is registered but the serialization ignores the configuration of the mapper.
I have tried different aproaches.
Approach 1
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { ObjectMapper mapper = new ObjectMapper(); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); converters.add(new MappingJackson2HttpMessageConverter(mapper)); } }
Approach 2
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { for (HttpMessageConverter<?> converter : converters) { if (converter instanceof MappingJackson2HttpMessageConverter) { MappingJackson2HttpMessageConverter jacksonMessageConverter = (MappingJackson2HttpMessageConverter) converter; ObjectMapper objectMapper = jacksonMessageConverter.getObjectMapper(); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); break; } } } }