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

Spring应用使用springfox-swagger-ui配置两个不同版本Swagger端点的咨询

springfox-swagger-ui 2.9.2 多版本Swagger入口配置方案

完全可以实现,核心逻辑是通过配置多组Docket划分接口版本,再配合Spring MVC资源映射实现不同路径前缀的Swagger UI访问,具体配置步骤如下:

1. 引入基础依赖

确保pom.xml(Maven)或build.gradle(Gradle)中已引入正确版本的依赖:

<!-- Maven依赖示例 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

2. 配置多版本Docket分组

新增Swagger配置类,定义两个Docket实例分别对应v1、v2版本的接口:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {

    // v1版本接口Docket配置
    @Bean
    public Docket docketV1() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("v1")
                .select()
                // 替换为你自己的v1接口包路径,或者用paths匹配/v1/**的接口
                .apis(RequestHandlerSelectors.basePackage("com.yourpackage.api.v1"))
                .paths(PathSelectors.ant("/api/v1/**"))
                .build();
    }

    // v2版本接口Docket配置
    @Bean
    public Docket docketV2() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("v2")
                .select()
                // 替换为你自己的v2接口包路径,或者用paths匹配/v2/**的接口
                .apis(RequestHandlerSelectors.basePackage("com.yourpackage.api.v2"))
                .paths(PathSelectors.ant("/api/v2/**"))
                .build();
    }

    // 配置Swagger UI资源映射,支持自定义前缀路径访问
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 映射v1路径的swagger资源
        registry.addResourceHandler("/api/v1/swagger-ui.html**")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/api/v1/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");

        // 映射v2路径的swagger资源
        registry.addResourceHandler("/api/v2/swagger-ui.html**")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/api/v2/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

3. 验证访问

启动Spring应用后直接访问以下两个地址即可分别进入对应版本的Swagger文档页:

  • /api/v1/swagger-ui.html:仅展示v1版本接口
  • /api/v2/swagger-ui.html:仅展示v2版本接口

注意事项

  • 如果你的接口前缀规则不同,可自行调整Docket配置中paths的匹配规则
  • 若项目配置了全局接口前缀、权限拦截,需要将/v2/api-docs、/api/v1/**、/api/v2/**的Swagger相关路径加入放行名单
  • 2.9.2版本本身兼容该配置,不需要额外引入其他第三方依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:06:03