I have configured @Bean
for Jackson2ObjectMapperBuilder
where I am setting the DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
property set to false
, in order to allow deserialization of JSON objects with unmapped properties. As-
@Bean
public Jackson2ObjectMapperBuilder filteringObjectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.failOnUnknownProperties(false);
builder.serializationInclusion(Include.NON_EMPTY);
builder.annotationIntrospector(new DefaultFilterAnnotationIntrospector("DynamicFieldFilter"));
return builder;
}
As per spring boot reference documentation Defining a @Bean
of type Jackson2ObjectMapperBuilder
will allow you to customize both default ObjectMapper
and XmlMapper
(used in MappingJackson2HttpMessageConverter
and MappingJackson2XmlHttpMessageConverter
respectively).
But Jackson2ObjectMapperBuilder
created in our @Bean
configuration class, is not getting used in the message converters. and when a incoming request has unknown properties , it is getting failed.
But When I am configuring Object Mappers as
@Bean
public Jackson2ObjectMapperBuilder filteringObjectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.failOnUnknownProperties(false);
builder.serializationInclusion(Include.NON_EMPTY);
builder.annotationIntrospector(new DefaultFilterAnnotationIntrospector("DynamicFieldFilter"));
return builder;
}
@Bean
public MappingJackson2HttpMessageConverter jacksonMessageConverter(Jackson2ObjectMapperBuilder builder) {
return new MappingJackson2HttpMessageConverter(builder.build());
}
@Bean
@ConditionalOnClass(
name = {"com.fasterxml.jackson.dataformat.xml.XmlMapper"}
)
public MappingJackson2XmlHttpMessageConverter jacksonXmlMessageConverter(Jackson2ObjectMapperBuilder builder) {
return new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build());
}
It is able to accept that incoming request and is not getting failed with unknown properties.
But as per spring boot reference documentation these are not required to configure. Can someone suggest why this is occurring with Spring boot 1.3?