Spring Boot http message converter serialize null sometimes

433 Views Asked by At

In Spring boot, is it possible to have many different versions of gson or Jackson http converters and use them dynamically whenever I need a specific type of data format?

1

There are 1 best solutions below

1
On

You have to create two beans for GsonHttpMessageConverter the first one with settings by default and second one with setting for serializing nulls by following way:

@Bean
public GsonHttpMessageConverter gsonHttpMessageConverter() {
    return buildGsonHttpMessageConverter(MapperUtil.getGsonInstance());
}

@Bean
public GsonHttpMessageConverter gsonHttpMessageConverterWithNulls() {
    return buildGsonHttpMessageConverter(MapperUtil.getGsonInstanceSerializeNulls());
}

private GsonHttpMessageConverter buildGsonHttpMessageConverter(final Gson gson) {
    final GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
    converter.setGson(gson);
    return converter;
}

And when you want to use one of them then call @Qualifier("someBean") annotation. by following way:

@Autowired
@Qualifier("gsonHttpMessageConverter")
GsonHttpMessageConverter gsonHttpMessageConverter;

@Autowired
@Qualifier("gsonHttpMessageConverterWithNulls")
GsonHttpMessageConverter gsonHttpMessageConverterWithNulls;