我将spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false在Spring Boot配置,但杰克逊仍然串行产生[1942,4,2],而不是"1942-04-02"一个DateTime值。
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
[1942,4,2]
"1942-04-02"
DateTime
一些调试快照
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.Jackson2ObjectMapperBuilderCustomizerConfiguration.StandardJackson2ObjectMapperBuilderCustomizer#customize
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”->“假”
this.features
com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase#useTimestamp
provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
尝试修复
spring.jackson.serialization.write-dates-as-timestamps=false
WebMvcConfigurationSupport
WebMvcConfigurerAdapter
Spring Boot将WebMvcConfigurationSupportBean 的存在指示为您要完全控制Spring MVC的配置。通常,您最终会通过使用来获得这样的bean,@EnableWebMvc但是您也可以声明自己的bean或配置类,它是一个WebMvcConfigurationSupport。
@EnableWebMvc
如果您继承WebMvcConfigurerAdapter而不是继承,那么您将对WebMvcConfigurationSupportSpring Boot的Spring MVC自动配置进行附加更改,而不是完全接管。
Spring Boot的Spring MVC自动配置的一部分是对其进行配置,以使用自动配置ObjectMapper的HTTP消息转换。如果关闭Spring MVC的Boot的自动配置,它将使用它自己的,ObjectMapper不受任何spring.jackson.*配置设置影响的单独配置。
ObjectMapper
spring.jackson.*