Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring and jackson, how to disable FAIL_ON_EMPTY_BEANS through @ResponseBody

Tags:

spring

jackson

Is there a global configuration in spring that can disable spring FAIL_ON_EMPTY_BEANS for all controller annotated with @ResponseBody?

like image 517
user2412555 Avatar asked Mar 04 '15 18:03

user2412555


3 Answers

If you are using Spring Boot, you can set the following property in application.properties file.

spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false

Thanks to @DKroot for his valuable comment. But I believe this should be its own answer for others.

like image 62
user238607 Avatar answered Oct 08 '22 03:10

user238607


You can configure your object mapper when configuring configureMessageConverters

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    MappingJackson2HttpMessageConverter converter = 
        new MappingJackson2HttpMessageConverter(mapper);
    return converter;
}

If you want to know how to do exactly in your application, please update your question with your configuration files (xml or java configs).

Here is a good article how to customize message converters.

Edit: If you are using XML instead of Java configs, you can create a custom MyJsonMapper class extending ObjectMapper with custom configuration, and then use it as follows

public class MyJsonMapper extends ObjectMapper {    
        public MyJsonMapper() {
            this.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        }
}

In your XML:

<mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper" ref="jacksonObjectMapper" />
            </bean>
        </mvc:message-converters>
</mvc:annotation-driven>


<bean id="jacksonObjectMapper" class="com.mycompany.example.MyJsonMapper" >
like image 36
vtor Avatar answered Oct 08 '22 04:10

vtor


cant find spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false in spring boot 2.2.5

I use this

@Configuration
public class SerializationConfiguration {
    @Bean
    public ObjectMapper objectMapper() {
        return new ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
    }
}
like image 8
Evol Rof Avatar answered Oct 08 '22 04:10

Evol Rof