AndreasGloeckner
AndreasGloeckner

Reputation: 302

MappingJackson2HttpMessageConverter vs. Jackson2ObjectMapperBuilder

Can anyone tell me what are the differences between these objects? When I use first one spring acts different to the second one, although they nearly configure the same.

Both are configured in my WebMvcConfigurerAdapter. When i should use which one to configure JSON-Serialization and JSON-Deserialization?

My code:

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
    objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    objectMapper.setSerializationInclusion(Include.ALWAYS);
    jsonConverter.setObjectMapper(objectMapper);
    return jsonConverter;
}



@Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        builder.propertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
        builder.serializationInclusion(Include.ALWAYS);
        builder.failOnEmptyBeans(false);
        builder.failOnUnknownProperties(false);
        builder.indentOutput(true).dateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
        converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
    }

Upvotes: 0

Views: 2804

Answers (1)

Petr Mensik
Petr Mensik

Reputation: 27496

You need to define MappingJackson2HttpMessageConverter in order to serialize and deserialize your JSON input. Jackson uses class ObjectMapper to convert JSON to Java objects and vice versa, so Jackson2ObjectMapperBuilder is just a convenient class which uses Builder pattern to build ObjectMapper for you which can be later injected into the converter.

Upvotes: 2

Related Questions