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

Spring Boot微服务中Swagger误显示其他包Controllers的问题求助

解决SpringDoc显示依赖包中Controller的问题

方案一:直接限定SpringDoc的扫描范围(推荐)

springdoc的扫描逻辑独立于Spring的@ComponentScan,最直接的方式是明确指定它只扫描你需要的包:

  • 在application.yml或application.properties中添加配置:

    springdoc:
      packages-to-scan: cm.test.p1.controller
    

    配置后springdoc只会扫描cm.test.p1.controller下的Controller,不会触及p2的相关包。

  • 也可以通过Java代码配置GroupedOpenApi,实现更灵活的API分组管理:

    @Configuration
    public class SpringDocConfig {
        @Bean
        public GroupedOpenApi p1Api() {
            return GroupedOpenApi.builder()
                    .group("p1-api")
                    .packagesToScan("cm.test.p1.controller")
                    .build();
        }
    }
    

方案二:修正@ComponentScan的排除过滤器

如果你的需求是让p2的Controller完全不被Spring容器管理(而非仅隐藏Swagger),需要确保@ComponentScan的排除规则配置正确。之前的正则或ASPECTJ模式可能未精准匹配,试试按注解类型排除:

@SpringBootApplication
@ComponentScan(basePackages = {"cm.test.p1", "cm.test.p2"},
               excludeFilters = {
                   @Filter(type = FilterType.ANNOTATION, 
                           value = {RestController.class, Controller.class},
                           basePackages = "cm.test.p2")
               })
public class P1Application {
    public static void main(String[] args) {
        SpringApplication.run(P1Application.class, args);
    }
}

该配置会明确排除cm.test.p2下所有标注了@RestController或@Controller的类,确保这些Controller不会被Spring注册,springdoc自然也不会显示它们。

方案三:排除SpringDoc中的特定类/包

如果p2的Controller必须被Spring管理,但仅需隐藏在Swagger中,可配置springdoc的排除规则:

springdoc:
  packages-to-exclude: cm.test.p2.controller

或者在GroupedOpenApi中针对性排除:

@Bean
public GroupedOpenApi p1Api() {
    return GroupedOpenApi.builder()
            .group("p1-api")
            .packagesToScan("cm.test.p1", "cm.test.p2")
            .packagesToExclude("cm.test.p2.controller")
            .build();
}

注意事项

  • 确认springdoc版本与配置属性兼容,部分旧版本可能使用springdoc.swagger-ui.packages-to-scan而非统一的springdoc.packages-to-scan
  • 核对p2的Controller包路径是否准确,比如是否是cm.test.p2.controller而非复数形式cm.test.p2.controllers

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:12:56