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

Spring Boot中如何配置Swagger按路径过滤服务(屏蔽/management接口)

解决SpringFox Swagger2排除/management路径接口的问题

针对你使用springfox-swagger2 2.6.1的场景,有两种简单有效的方法可以让/management路径的服务不出现在Swagger文档中:

方法一:通过路径过滤全局排除

创建Swagger配置类,在Docket实例中指定要包含(或排除)的路径,这样Swagger只会扫描符合条件的接口:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                // 方案1:只扫描/api开头的所有接口,自动排除/management路径
                .paths(PathSelectors.ant("/api/**"))
                // 方案2:用正则排除所有/management开头的路径(适合需要保留其他非/api路径的场景)
                // .paths(PathSelectors.regex("^(?!/management).*$"))
                .build()
                .apiInfo(buildApiInfo());
    }

    private ApiInfo buildApiInfo() {
        return new ApiInfoBuilder()
                .title("核心API文档")
                .description("仅包含/api路径下的REST服务接口")
                .version("1.0.0")
                .build();
    }
}

两种路径选择方式的区别:

  • PathSelectors.ant("/api/**"):精准匹配所有以/api开头的接口,是最直接的方式,适合你的场景(只想保留/api下的服务)。
  • 正则表达式^(?!/management).*$:是一个负向预查,意思是"所有不以/management开头的路径",如果你的应用还有其他非/api、非/management的路径需要保留,这个方式更合适。

方法二:用注解标记单个接口/Controller排除

如果需要更精细的控制(比如/management下部分接口需要保留,部分排除),可以在不需要生成文档的Controller或方法上添加@ApiIgnore注解:

// 整个Controller下的所有接口都排除出Swagger文档
@RestController
@RequestMapping("/management")
@ApiIgnore
public class SystemManagementController {

    // 或者单独排除某个特定方法
    @ApiIgnore
    @GetMapping("/metrics")
    public ResponseEntity<Map<String, Object>> getMetrics() {
        // 业务逻辑
        return ResponseEntity.ok(Collections.emptyMap());
    }
}

这种方式的优势是灵活性高,适合零散的接口排除;如果/management下有大量Controller,还是方法一的全局路径过滤更高效。

配置完成后,重启应用,访问/v2/api-docs查看返回的JSON内容,就能确认/management路径的服务已经被排除了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:38:45