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

Spring Boot中Swagger UI控制器接口与实现端点重复问题解决

解决Swagger UI端点重复显示问题

问题原因

你遇到的重复端点问题,核心原因是当前的Swagger Docket配置会扫描所有带有@RequestMapping注解的方法——而你的接口ConsentApi(带有Swagger注解和@RequestMapping)和实现类ConsentApiController(继承了接口的方法,自然也带有@RequestMapping的元数据)都被Swagger识别为了端点来源,所以UI里会显示重复的条目。

解决方案

只需要修改Docket配置中的apis()选择器,让Swagger只扫描你的接口类(也就是带有@Api注解的类),而不是所有带@RequestMapping的方法。

修改后的Docket配置

@Bean
public Docket customImplementation() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            // 关键:只扫描带有@Api注解的接口类
            .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
            .paths(PathSelectors.ant("/consent/*"))
            .build()
            .directModelSubstitute(java.time.LocalDate.class, java.sql.Date.class)
            .directModelSubstitute(java.time.OffsetDateTime.class, java.util.Date.class)
            .apiInfo(apiInfo());
}

其他可选方案

如果你的接口和实现类位于不同的包下,也可以通过指定接口所在包来筛选:

.apis(RequestHandlerSelectors.basePackage("com.yourproject.api")) // 替换成你的接口实际所在包路径

验证效果

修改配置后重启应用,打开Swagger UI,你会发现之前重复的端点已经消失,只会显示ConsentApi接口中定义的那些端点了。

另外需要注意:确保你的实现类ConsentApiController没有额外添加@RequestMapping或Swagger相关注解,避免再次触发重复扫描。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:04:01