如何阻止SpringDoc解析Jackson注解,仅通过@Schema生成Schema?
解决方案
要让SpringDoc仅使用@Schema注解生成Schema、忽略Jackson的类型相关注解,可以通过以下两种方式实现:
1. 全局配置(适用于所有类)
在项目的配置文件(application.properties或application.yml)中添加以下配置,全局禁用SpringDoc对Jackson类型注解的解析:
- application.properties:
springdoc.model-converter.jackson.ignore-json-type-info=true
- application.yml:
springdoc: model-converter: jackson: ignore-json-type-info: true
2. 针对特定类配置(仅影响目标类)
如果只想让特定类忽略Jackson注解,直接在该类的@Schema注解中添加ignoreJsonTypeInfo = true属性即可。修改你的FormTemplateElement类如下:
@Schema( discriminatorProperty = "formTemplateElementType", name = "FormTemplateElement", ignoreJsonTypeInfo = true, // 新增属性,忽略Jackson类型注解 discriminatorMapping = { @DiscriminatorMapping(value = "ShortTextFormElement", schema = ShortTextFormElement.class), @DiscriminatorMapping(value = "LongTextFormElement", schema = LongTextFormElement.class), }, subTypes = { ShortTextFormElement.class, LongTextFormElement.class, } ) @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, property = "formTemplateElementType", visible = false ) @JsonSubTypes( { @JsonSubTypes.Type(value = ShortTextFormElement.class), @JsonSubTypes.Type(value = LongTextFormElement.class), }) @JsonIgnoreProperties(ignoreUnknown = true) public abstract class FormTemplateElement { @NotEmpty UUID id; @NotEmpty FormTemplateElementType formTemplateElementType; @NotEmpty Boolean isRequired; @NotEmpty Boolean isHidden; }
版本兼容性说明
你使用的SpringDoc 2.3.0版本已支持上述配置(该特性从SpringDoc 2.0.0版本开始引入),可直接使用。设置完成后,SpringDoc会完全依据@Schema中的配置生成OpenAPI Schema,同时Jackson注解仍可正常用于序列化和反序列化操作。
内容的提问来源于stack exchange,提问作者Suhaib Ahmed
相关产品推荐
相关产品推荐

