You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中如何在YAML配置Jackson反序列化的WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS

配置不生效的常见原因

  • 手动注册了自定义的ObjectMapper Bean,覆盖了Spring Boot自动装配的实例
    Spring Boot自动装配的ObjectMapper会自动加载application.yml中的spring.jackson前缀配置,一旦你通过@Bean自行声明了ObjectMapper,自动配置就会失效,配置文件中的相关属性不会被注入到你自定义的实例中。
  • 项目中添加了@EnableWebMvc注解
    该注解会完全接管Spring MVC的默认配置,包括Jackson序列化/反序列化的自动配置,导致配置文件中的Jackson属性不生效。
  • 配置格式错误
    YAML配置不支持Tab缩进,必须使用空格缩进,同时注意配置项归属:WRITE_*开头的时间戳配置属于SerializationFeature,应放在serialization节点下;READ_*开头的属于DeserializationFeature,应放在deserialization节点下,放错节点的配置不会生效。
  • 配置被更高优先级的设置覆盖
    Spring Boot配置存在优先级顺序,若在启动参数、环境变量、Nacos/Apollo等远程配置中心存在同名配置,会覆盖本地application.yml的配置。

对应解决方法

场景1:自定义了ObjectMapper

使用Spring Boot提供的Jackson2ObjectMapperBuilder构建实例,自动加载配置文件中的属性:

@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
    // 可在此额外添加自定义配置
    return builder.build();
}

也可以直接手动关闭对应特性:

@Bean
public ObjectMapper objectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.disable(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS);
    mapper.disable(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS);
    // 其他自定义配置
    return mapper;
}

场景2:使用了@EnableWebMvc注解

如果不需要完全接管MVC配置可直接删除该注解即可恢复Jackson自动配置;如需保留注解可手动注册消息转换器:

@Configuration
public class JacksonConfig implements WebMvcConfigurer {
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder()
                .featuresToDisable(
                        DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS,
                        SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS
                );
        converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
    }
}

场景3:配置格式错误

修正后的标准配置如下,注意使用空格缩进:

spring:
  jackson:
    serialization:
      WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS: false
    deserialization:
      READ_DATE_TIMESTAMPS_AS_NANOSECONDS: false

内容的提问来源于stack exchange,提问作者Eric Reboisson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:06:10