I am attempting to add a custom HttpMessageConverter<T>
to my (Spring-powered) REST API.
@Configuration
public class SpringWebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new BodyPrinterInterceptor());
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
final List<HttpMessageConverter> injectedConverters = new ArrayList<>();
final SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null, null, null))
.addSerializer(LocalDate.class, new LocalDateSerializer())
.addDeserializer(LocalDate.class, new LocalDateDeserializer())
.addSerializer(Type2_Numbers.class, new Type2_Numbers_Serializer())
.addDeserializer(Type2_Numbers.class, new Type2_Numbers_Deserializer());
final ObjectMapper objectMapper = new ObjectMapper()
.enable(SerializationFeature.INDENT_OUTPUT)
.registerModule(module);
final MappingJackson2HttpMessageConverter converter1 = new MappingJackson2HttpMessageConverter();
converter1.setObjectMapper(objectMapper);
injectedConverters.add(converter1);
final XmlMapper xmlMapper = new XmlMapper();
xmlMapper.registerModule(module);
xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);
final Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.xml();
final MappingJackson2XmlHttpMessageConverter converter2 = new MappingJackson2XmlHttpMessageConverter(builder.build());
converter2.setObjectMapper(xmlMapper);
injectedConverters.add(converter2);
for (HttpMessageConverter injectedConverter : injectedConverters) {
converters.add(injectedConverter);
}
}
}
It seems like the added converters are not working. (Serializers & Deserializers are not being called)
Question How do i correctly add the HttpMessageConverters?