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

如何在springdoc自动生成的Swagger文档中移除minimum参数

解决SpringDoc保留@Min校验但隐藏Swagger文档中minimum字段的问题

针对你使用springdoc-openapi-starter-webmvc-ui 2.1.0时,@Min注解会自动映射到Swagger Schema的minimum字段且覆盖@Schema配置的问题,可以通过自定义ModelConverter的方式实现保留校验逻辑、隐藏文档中minimum属性的需求,具体步骤如下:

实现自定义ModelConverter

创建一个转换器,拦截带有@Min注解的字段/参数,在默认转换完成后移除Schema中的minimum属性:

import io.swagger.v3.core.converter.AnnotatedType;
import io.swagger.v3.core.converter.ModelConverter;
import io.swagger.v3.core.converter.ModelConverterContext;
import io.swagger.v3.core.converter.ModelConverterImpl;
import io.swagger.v3.oas.models.media.Schema;
import jakarta.validation.constraints.Min;
import java.lang.annotation.Annotation;
import java.util.Iterator;

public class MinAnnotationHideConverter extends ModelConverterImpl {

    @Override
    public Schema resolve(AnnotatedType annotatedType, ModelConverterContext context, Iterator<ModelConverter> chain) {
        // 先执行默认转换逻辑
        Schema schema = super.resolve(annotatedType, context, chain);
        if (schema == null) {
            return null;
        }
        // 检查当前类型是否带有@Min注解,有则移除minimum属性
        for (Annotation annotation : annotatedType.getCtxAnnotations()) {
            if (annotation instanceof Min) {
                schema.setMinimum(null);
                break;
            }
        }
        return schema;
    }
}

注册自定义转换器

通过配置类将自定义转换器注册到SpringDoc的ModelConverters中,确保它能修改默认转换后的Schema:

import io.swagger.v3.core.converter.ModelConverters;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PostConstruct;

@Configuration
public class SpringDocCustomConfig {

    @PostConstruct
    public void registerCustomConverter() {
        ModelConverters.getInstance().addConverter(new MinAnnotationHideConverter());
    }
}

验证效果

  1. 重启应用后,打开Swagger UI查看接口文档,带有@Min注解的参数/字段的Schema中将不再显示minimum属性;
  2. 测试接口校验逻辑:传入小于@Min指定值的参数,依然会触发Jakarta Validation的校验错误,说明@Min的校验功能正常保留。

补充说明

如果需要全局禁用所有Validation注解到Schema的映射,可以在application.properties中添加配置:

springdoc.openapi.convert.validation.enabled=false

但这个配置会屏蔽所有校验注解(如@Max、@NotNull等)的文档映射,仅适合不需要任何校验注解关联文档的场景,因此更推荐使用自定义转换器的精准方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:15:55