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

如何获取经Jackson2ObjectMapperBuilderCustomizer自定义的ObjectMapper?

实现方案

你当前定义的Jackson2ObjectMapperBuilderCustomizer Bean本身就会自动作用于Spring Boot自动装配的ObjectMapper实例,只要满足以下条件,直接在业务代码中@Autowired ObjectMapper就能拿到应用了自定义规则的实例:

  • 你的自定义Jackson2ObjectMapperBuilderCustomizer所在的类添加了@Configuration注解,且被纳入Spring的组件扫描范围
  • 没有手动声明自定义的ObjectMapper Bean:如果你在配置类中自己写了@Bean public ObjectMapper objectMapper()的硬编码实现,Spring Boot的自动装配逻辑会失效,自定义的Customizer也不会作用于你手动创建的实例

如果你的项目确实需要手动声明ObjectMapper Bean,可以通过Jackson2ObjectMapperBuilder来构建,这样所有注册的Customizer规则都会自动生效,示例代码如下:

@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
    // 可在此处追加额外个性化配置,不会覆盖已注册的Customizer规则
    return builder.build();
}

注意:如果你同时自定义了Spring MVC的HTTP消息转换器,不要在自定义MappingJackson2HttpMessageConverter时手动new新的ObjectMapper实例,直接注入容器中自动装配的ObjectMapper传入即可,保证Web层和业务代码的Jackson规则统一。

配置生效校验

注入ObjectMapper后可以通过以下代码快速验证规则是否生效:

// 校验序列化空值排除规则是否生效
System.out.println(objectMapper.getSerializationConfig().getDefaultPropertyInclusion().getValueInclusion());
// 校验自定义注解解析器是否生效
System.out.println(objectMapper.getSerializationConfig().getAnnotationIntrospector().getClass().getName());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:09:01