一些调试快照
>在org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.Jackson2ObjectMapperBuilderCustomizerConfiguration.StandardJackson2ObjectMapperBuilderCustomizer#customize there’s
configureFeatures(builder,this.jacksonProperties.getSerialization());
其中显示“WRITE_DATES_AS_TIMESTAMPS” – > “假”
>然后稍后在org.springframework.http.converter.json.Jackson2ObjectMapperBuilder #configure中有这个循环
for(Object feature:this.features.keySet()){
configureFeature(objectMapper,feature,this.features.get(feature));
}
再次this.features说“WRITE_DATES_AS_TIMESTAMPS” – > “假”
>然而,在DateTime序列化期间,com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase #useTimestamp表示false,因为provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)返回false.
试图修复
>出于绝望,我用spring.jackson.serialization.write-dates-as-timestamps = false替换了spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false因为我发现很多地方都提到过(尽管Boot documentation没有暗示)在这).那这个呢?它们似乎是同义词 – 没有效果.
>在撰写此问题时,建议使用WRITE_DATES_AS_TIMESTAMPS not woking on Spring boot 1.3.5.答案是将WebMvcConfigurationSupport替换为WebMvcConfigurerAdapter.虽然这确实有帮助但我不明白为什么会这样.
如果您将WebMvcConfigurerAdapter而不是WebMvcConfigurationSupport子类化,那么您将对Spring Boot的Spring MVC自动配置进行附加更改,而不是完全接管.
Spring Boot的Spring MVC自动配置的一部分是将其配置为使用自动配置的ObjectMapper进行HTTP消息转换.如果关闭Boot的Spring MVC自动配置,它将使用自己独立的ObjectMapper,它不受任何spring.jackson.*配置设置的影响.
转载注明原文:设置Jackson功能WRITE_DATES_AS_TIMESTAMPS在Spring Boot中不起作用 - 乐贴网