在spring boot 1.x
的時候,被@ResponseBody
修飾的返回值中若是存在java.util.Date
類型,則會默認被序列化爲timestamp
的形式,如:java
@RestController public class TestController { @GetMapping("/test") public Object test(){ return new Date(); } }
返回爲:spring
當升級爲spring boot 2.0.2
的時候,在代碼不變的狀況下,返回值爲:app
經過調試,發現緣由在於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:
文檔