在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:文档