Spring Boot 3集成Swagger失败:无法加载API定义求助
问题原因及解决办法
你的问题出在依赖不兼容+框架混用+配置类错误三个核心点上,具体分析和解决步骤如下:
1. 核心问题拆解
- Spring Boot 3基于Spring 6,你引入的
springfox-boot-starter:3.0.0仅支持Spring Boot 2.x版本,和Spring Boot 3完全不兼容,会引发底层API冲突。 - 你同时混用了SpringFox(旧Swagger实现)和SpringDoc(Spring Boot 3官方推荐的OpenAPI实现)两个不同的API文档框架,二者配置逻辑、底层机制完全不同,会互相干扰。
- 你的
SwaggerConfig类是基于SpringFox的Docket和Swagger 2规范编写的,在Spring Boot 3+SpringDoc环境下完全无效,甚至会触发加载异常。
2. 具体解决步骤
步骤一:清理依赖,保留SpringDoc
删除pom.xml中的springfox-boot-starter依赖,仅保留SpringDoc的依赖:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.0.3</version> </dependency>
步骤二:删除或替换旧配置类
直接删除你当前的SwaggerConfig类,SpringDoc默认会自动扫描所有API接口。如果需要自定义文档信息(比如标题、描述),可以改用SpringDoc的配置方式:
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("title") .description("desc") .version("1")); } }
步骤三:访问正确的Swagger UI地址
启动应用后,访问http://localhost:你的端口号/swagger-ui.html(SpringDoc 2.x版本的默认地址),即可正常加载API定义。
内容的提问来源于stack exchange,提问作者java12399900
相关产品推荐
相关产品推荐

