Mar*_*tör 7 serialization spring jackson spring-boot
我设置spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false了Spring Boot配置,但Jackson序列化器仍然生成[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" - >"false"
然后稍后在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" - >"false"
然而在序列化过程中DateTime com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase#useTimestamp说错误因为provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)返回错误.
试图修复
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false了spring.jackson.serialization.write-dates-as-timestamps=false因为我发现在很多地方都提到过(尽管Boot文档没有暗示这一点).那这个呢?它们似乎是同义词 - 没有效果.WebMvcConfigurationSupport用WebMvcConfigurerAdapter.虽然这确实有帮助但我不明白为什么会这样.And*_*son 11
Spring Boot将WebMvcConfigurationSupportbean作为一个指示,表明您希望完全控制Spring MVC的配置.您通常会使用这样的bean,@EnableWebMvc但您也可以声明自己的bean或配置类WebMvcConfigurationSupport.
如果你是子类WebMvcConfigurerAdapter而不是WebMvcConfigurationSupport你正在对Spring Boot的Spring MVC的自动配置进行附加更改而不是完全接管.
Spring Boot的Spring MVC自动配置的一部分是将其配置为使用自动配置ObjectMapper的HTTP消息转换.如果你关闭Boot的Spring MVC的自动配置,它将使用它自己的,独立的ObjectMapper,不受任何spring.jackson.*配置设置的影响.
| 归档时间: |
|
| 查看次数: |
6288 次 |
| 最近记录: |