【发布时间】:2017-06-08 00:41:16
【问题描述】:
我已经找到了如何自定义ObjectMapper 日期格式以让 Spring 帮助自动序列化/反序列化(当我想将对象返回给客户端时进行序列化,当请求正文是 json 对象时进行反序列化),但我有许多具有不同日期格式的 DTO,有些可能需要 yyyy-mm-dd,有些是 dd-mm-yyyy,一个 ObjectMapper 不适用于不同所需的日期格式,此问题的最佳实践解决方案是什么?
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(mappingJacksonHttpMessageConverter());
}
MappingJacksonHttpMessageConverter mappingJacksonHttpMessageConverter() {
MappingJacksonHttpMessageConverter mappingJacksonHttpMessageConverter = new MappingJacksonHttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("dd-MM-yyyy"));
objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
mappingJacksonHttpMessageConverter.setObjectMapper(objectMapper);
mappingJacksonHttpMessageConverter.setPrettyPrint(true);
return mappingJacksonHttpMessageConverter;
}
【问题讨论】:
-
您是否有不同的 pojo 映射到 DTO 或使用相同的 POJO 映射不同的 DTO?
-
Erm... 在控制器中,我只使用 DTO,我的 POJO 是数据库实体。我不知道你说的“地图”是什么意思?
-
我在谈论映射在 DTO 存储库层中的 pojos
-
是的,我的POJO实体很少,因为我的表单数据或返回的数据与POJO实体不一样,所以我创建了很多与POJO几乎相同但有些可能不一样的DTO , 并且 DTO 包含一些验证逻辑。
-
@harshavmb 是的,我试过了,注解确实比全局
ObjectMapper配置优先级更高。