Here's an example solution offered by hzpz:
Custom Converter:
public class CustomConverter extends MappingJackson2HttpMessageConverter { private String basePackage; public CustomConverter(String basePackage) { this.basePackage = basePackage; } @Override public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) { if (contextClass.getName().startsWith(basePackage)) { return super.canRead(type, contextClass, mediaType); } return false; } @Override public boolean canWrite(Class<?> clazz, MediaType mediaType) { if (clazz.getName().startsWith(basePackage)) { return super.canWrite(clazz, mediaType); } return false; } }
Configuration
@Configuration public class CustomConfig { @Bean public MappingJackson2HttpMessageConverter firstConverter() { MappingJackson2HttpMessageConverter converter = new CustomConverter("package.camel"); converter.setObjectMapper(firstObjectMapper()); return converter; } @Bean public MappingJackson2HttpMessageConverter secondConverter() { MappingJackson2HttpMessageConverter converter = new CustomConverter("package.snake"); converter.setObjectMapper(secondObjectMapper()); return converter; } @Bean public ObjectMapper firstObjectMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE); return mapper; } @Bean public ObjectMapper secondObjectMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); return mapper; } }
source share