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

Spring Boot 3.1.4中指定Swagger UI仅展示部分GroupedOpenApi

解决Swagger UI仅显示指定GroupedOpenApi分组的问题

针对Spring Boot 3.1.4(Java 17)+ springdoc-openapi-starter-webmvc-ui 2.2.0的场景,要让Swagger UI仅展示5个分组中的3个,同时保留另外2个给Redoc使用,可通过以下两种可行方案实现:

方案一:使用SwaggerUiCustomizer自定义接口

springdoc提供了SwaggerUiCustomizer接口用于定制Swagger UI配置,可在合适时机过滤掉不需要展示的分组:

import org.springframework.context.annotation.Configuration;
import org.springdoc.core.customizers.SwaggerUiCustomizer;
import org.springdoc.core.properties.SwaggerUiConfigProperties;

@Configuration
public class CustomSwaggerUiConfig implements SwaggerUiCustomizer {

    @Override
    public void customize(SwaggerUiConfigProperties swaggerUiConfig) {
        // 移除不需要在Swagger UI显示的分组(示例为group4、group5)
        swaggerUiConfig.getUrls().removeIf(url ->
            url.getName().equals("group4") || url.getName().equals("group5")
        );
    }
}

说明

  • url.getName()对应你定义的GroupedOpenApi Bean的groupName属性,替换成实际需要隐藏的分组名称即可;
  • 该方法会在Swagger UI配置初始化完成后执行,确保过滤逻辑覆盖自动注册的分组URL。

方案二:使用BeanPostProcessor修改配置

通过Bean后置处理器,在SwaggerUiConfigProperties Bean初始化完成后修改其URL列表:

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;
import org.springdoc.core.properties.SwaggerUiConfigProperties;

@Component
public class SwaggerUiUrlFilter implements BeanPostProcessor {

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof SwaggerUiConfigProperties swaggerUiConfig) {
            // 仅保留需要展示的分组(示例为group1、group2、group3)
            swaggerUiConfig.getUrls().removeIf(url ->
                !url.getName().equals("group1") &&
                !url.getName().equals("group2") &&
                !url.getName().equals("group3")
            );
        }
        return bean;
    }
}

为什么之前的方法无效?

  1. springdoc.api-docs.groups.enabled属性在springdoc-openapi 2.x版本中已被移除,分组默认启用;
  2. springdoc.swagger-ui.urls[]配置是追加而非覆盖,springdoc会自动将所有GroupedOpenApi对应的URL添加到列表中,手动配置的URL只会额外增加;
  3. 直接修改AbstractSwaggerUiConfigProperties时机不对,后续初始化逻辑可能会重新填充全部分组URL,导致修改失效。

关于Redoc的兼容性

上述方案仅修改Swagger UI的展示列表,不会影响GroupedOpenApi Bean的存在,Redoc仍可通过对应的API文档地址(如/v3/api-docs/group4、/v3/api-docs/group5)访问指定分组的接口文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:32:20