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

Spring Boot3.0+Gradle集成Springfox Swagger2遇类缺失错误求助

Spring Boot 3.0集成Swagger失败解决方案

问题背景

在Gradle构建的Spring Boot 3.0.1项目中尝试集成Swagger,测试Springfox 3.0.0及旧版本均无法正常启动,核心原因是Springfox已停止维护,完全不兼容Spring Boot 3.x版本。

终端错误信息

错误截图

当前Build.gradle配置

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.1'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'practice.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '19'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation("io.springfox:springfox-swagger2:3.0.0")
}

tasks.named('test') {
    useJUnitPlatform()
}

主Java文件代码

package practice.example.crud_practice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

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;

@SpringBootApplication
@EnableSwagger2
@RestController
public class CrudPracticeApplication {

    public static void main(String[] args) {
        SpringApplication.run(CrudPracticeApplication.class, args);
    }

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any()) // 包含所有控制器
            .paths(PathSelectors.any())
            .build();
      }

      @GetMapping("/hello")
      public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
          return String.format("Hello %s!", name);
      }
}

关键现象

注释掉代码中的@EnableSwagger2注解后,项目可正常启动,无错误。


解决方案:改用SpringDoc OpenAPI

SpringDoc是Spring Boot 3.x官方推荐的Swagger替代方案,完全适配Spring Framework 6及Jakarta EE规范,维护活跃。

1. 修改Gradle依赖

替换原Springfox依赖为SpringDoc:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    // SpringDoc OpenAPI依赖
    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
}

2. 简化主代码

移除原有的@EnableSwagger2注解和Docket Bean,SpringDoc会自动扫描接口生成文档:

package practice.example.crud_practice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class CrudPracticeApplication {

    public static void main(String[] args) {
        SpringApplication.run(CrudPracticeApplication.class, args);
    }

      @GetMapping("/hello")
      public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
          return String.format("Hello %s!", name);
      }
}

3. (可选)自定义API文档配置

如果需要自定义文档标题、版本等信息,可添加OpenAPI配置类:

package practice.example.crud_practice;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenApiConfig {
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("CRUD Practice API")
                        .version("0.0.1-SNAPSHOT")
                        .description("Spring Boot 3.x集成OpenAPI示例文档"));
    }
}

4. 访问文档界面

启动项目后,访问http://localhost:8080/swagger-ui.html即可查看自动生成的API文档。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:34:39