spring boot 2.x 接口返回时间类型不再自动序列化为timestamp

1:问题描述

spring boot 1.x版本,被@ResponseBody修饰的返回值中如果存在java.util.Date类型,则会默认被序列化为timestamp的形式。【1585656044119】
而在spring boot 2.x版本中,返回值中的java.util.Date类型不再默认序列化为timestamp。【2020-03-31T12:03:16.586+0000】

2:源码分析

在于spring boot 2.x中的org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration类中多了如下代码:

static {
    Map<Object, Boolean> featureDefaults = new HashMap<>();
    featureDefaults.put(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    FEATURE_DEFAULTS = Collections.unmodifiableMap(featureDefaults);
}

3:解决办法

如果需要序列化为timestamp形式,需要在application.yml中增加如下配置:

spring:
  jackson:
    serialization: 
      WRITE_DATES_AS_TIMESTAMPS: true

你可能感兴趣的:(spring,boot)