Перед миграцией на Spring Boot 2.1.0
у меня было настроено следующее ObjectMapper
с расширением WebMvcConfigurerAdapter
, работающим, как и ожидалось.
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
private static final ObjectMapper objectMapper = buildObjectMapper();
private static ObjectMapper buildObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configOverride(LocalDate.class).
setFormat(JsonFormat.Value.forPattern("yyyy-MM-dd"));
mapper.registerModule(new JavaTimeModule());
return mapper;
}
public static ObjectMapper getObjectMapper() {
return objectMapper;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new MappingJackson2HttpMessageConverter(objectMapper)); // JSON converter
}
}
Однако после миграции я вижу, что установка PropertyNamingStrategy, похоже, не имеет никакого эффекта,мое приложение по-прежнему ожидает, что формат полей JSON
будет соответствовать значению по умолчанию (например, требуется «bloodType» вместо «blood-type», как ожидается).
Я не думаю, что есть какие-либо проблемы ссам маппер, так как я использую статический getObjectMapper
для совместного использования того же экземпляра с REST Assured
через RestAssuredConfig
и, похоже, все еще ведет себя как ожидалось, если я обновлю свой собственный маппер на поведение по умолчанию (комментируя setPropertyNamingStrategy
), все кажетсяработать как ожидалось.
РЕДАКТИРОВАТЬ 1
На самом деле весь мой маппер игнорируется, я пытался изменить формат LocalDate
, и это также не имело никакого значения.Обновление заголовка для лучшего отражения проблемы.