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

Spring Boot集成Swagger 2.9.2:如何隐藏Swagger UI模型名称仅展示属性

Spring Boot Swagger 2.9.2 隐藏模型名称仅展示属性的实现方案

方法一:后端自定义ModelConverter处理(最实用)

Swagger 2.9.2支持通过自定义ModelConverter干预模型解析逻辑,我们可以在DTO类被解析成Swagger模型时,把模型名称设为空字符串,这样UI里就不会显示模型名,只留属性:

  1. 编写自定义ModelConverter类
import io.swagger.converter.ModelConverter;
import io.swagger.converter.ModelConverterContext;
import io.swagger.models.Model;
import io.swagger.models.ModelImpl;
import java.lang.reflect.Type;
import java.util.Iterator;

public class HideModelNameConverter implements ModelConverter {
    @Override
    public Model resolve(Type type, ModelConverterContext context, Iterator<ModelConverter> chain) {
        Model model = chain.next().resolve(type, context, chain);
        if (model instanceof ModelImpl) {
            // 把模型名称置空,Swagger UI就不会渲染模型标题
            ((ModelImpl) model).setName("");
        }
        return model;
    }
}
  1. 在Swagger配置类中注册转换器
    在你的SwaggerConfig类里,添加初始化方法完成转换器注册:
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import javax.annotation.PostConstruct;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @PostConstruct
    public void registerModelConverter() {
        // 将自定义转换器加入Swagger模型转换器列表
        io.swagger.converter.ModelConverters.getInstance().addConverter(new HideModelNameConverter());
    }

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.your.project.api"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("项目API文档")
                .version("1.0")
                .build();
    }
}

方法二:修改Swagger UI前端资源(不推荐)

如果后端方法无法满足需求,也可以直接修改前端UI样式隐藏模型名称:

  1. 把springfox-swagger-uijar包中的swagger-ui.html及对应CSS文件,复制到项目的resources/META-INF/resources/webjars/springfox-swagger-ui/目录下
  2. 在CSS文件中添加样式:.model-title { display: none; }
  3. 重启项目后,UI中的模型名称会被隐藏

这种方法的弊端是Swagger版本更新后,自定义静态资源可能失效,维护成本较高,优先推荐方法一。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:43:10