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

Springdoc中JacksonAnnotationIntrospector与@JsonTypeInfo不生效求助

问题解决步骤

1. 确保自定义ObjectMapper完整包含所有Jackson配置

你当前通过Jackson2ObjectMapperBuilder.build()生成的ObjectMapper,可能未显式绑定自定义的JacksonAnnotationIntrospector。需要在构建mapper时,明确注入自定义introspector:

@Bean
public ModelResolver modelResolver(Jackson2ObjectMapperBuilder builder) {
    ObjectMapper mapper = builder.build();
    // 替换为你的自定义AnnotationIntrospector实例
    mapper.setAnnotationIntrospector(new CustomJacksonAnnotationIntrospector());
    // 若@JsonTypeInfo通过mixins配置,确保mixins已正确注册
    // mapper.addMixIn(Money.class, MoneyMixin.class);
    return new ModelResolver(mapper);
}

2. 强制Springdoc复用全局ObjectMapper

如果项目中已存在配置完整的全局ObjectMapper Bean(包含自定义序列化器、反序列化器、mixins及AnnotationIntrospector),直接注入该Bean到ModelResolver,避免重新构建导致的配置不一致:

@Bean
public ModelResolver modelResolver(ObjectMapper customObjectMapper) {
    return new ModelResolver(customObjectMapper);
}

3. 配置Springdoc的Jackson序列化策略

在application.properties中添加配置,强制Springdoc遵循Jackson的注解解析规则:

# 启用Jackson注解全量支持
springdoc.object-mapper-configurer=com.yourpackage.CustomObjectMapperConfigurer

同时实现自定义配置类,统一管理Jackson配置:

@Component
public class CustomObjectMapperConfigurer implements ObjectMapperConfigurer {
    @Override
    public void configure(ObjectMapper objectMapper) {
        objectMapper.setAnnotationIntrospector(new CustomJacksonAnnotationIntrospector());
        objectMapper.registerModule(new CustomMoneyModule()); // 注册自定义序列化/反序列化模块
        objectMapper.addMixIn(Money.class, MoneyMixin.class);
    }
}

4. 验证@JsonTypeInfo配置有效性

确认@JsonTypeInfo注解直接标注在Money.class上,或在对应mixins类中正确配置,且ObjectMapper已加载这些mixins。若通过模块注册mixins,需确保模块已被正确注册到ObjectMapper。

5. 保证自定义ModelResolver的优先级

用@Primary标记你的自定义ModelResolver Bean,确保Spring优先使用该实例,避免默认ModelResolver覆盖配置:

@Primary
@Bean
public ModelResolver modelResolver(ObjectMapper customObjectMapper) {
    return new ModelResolver(customObjectMapper);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:50:17