[Spring Boot 2]@ResponseBody返回時間類型再也不自動序列化爲timestamp

spring boot 1.x的時候,被@ResponseBody修飾的返回值中若是存在java.util.Date類型,則會默認被序列化爲timestamp的形式,如:java

@RestController
public class TestController {

    @GetMapping("/test")
    public Object test(){
        return new Date();
    }
}

返回爲:spring

clipboard.png

當升級爲spring boot 2.0.2的時候,在代碼不變的狀況下,返回值爲:app

clipboard.png

經過調試,發現緣由在於spring boot 2.0.2中的org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration類中多了以下代碼:spa

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

即,在不加配置的狀況下,spring boot 2.0.2版本中,返回值中的java.util.Date類型再也不默認序列化爲timestamp調試

若是須要仍然按照以前的方式序列化,須要在application.yml中增長以下配置:code

spring:
  jackson:
    serialization: 
      WRITE_DATES_AS_TIMESTAMPS: true

多是由於沒有仔細看文檔致使出現了這個問題,記錄下來供遇到一樣問題的小夥伴們參考。ip

spring:
clipboard.png文檔

相關文章
相關標籤/搜索