Spring Boot集成Swagger遇启动错误,已尝试@EnableSwagger2注解
问题分析
你遇到的启动错误是Springfox 3.0.0与Spring Boot 3.x版本不兼容导致的。Spring Boot 3.x基于Spring 6框架,而Springfox 3.0.0仅支持到Spring Boot 2.x,其内部代码依赖的Spring MVC组件在Spring 6中存在变更,引发了NullPointerException(具体为PatternsRequestCondition实例为null)。
解决方法
方案一:替换为Springdoc OpenAPI(推荐)
Springfox已停止维护,Springdoc OpenAPI是当前Spring生态中主流的OpenAPI/Swagger实现,完美兼容Spring Boot 3.x。
步骤:
移除Springfox相关依赖
从你的pom.xml(Maven)或build.gradle(Gradle)中删除所有Springfox依赖,比如:<!-- 删除这些Springfox依赖 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>添加Springdoc依赖
Maven:<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.2.0</version> </dependency>Gradle:
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'移除@EnableSwagger2注解
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("API文档") .version("1.0") .description("自定义API描述")); } }访问文档
启动应用后,访问:http://localhost:8080/swagger-ui.html
方案二:使用第三方维护的Springfox兼容版本(不推荐)
Springfox官方未发布支持Spring Boot 3的正式版本,仅存在第三方维护的分支,稳定性无法保障。若必须使用,可尝试以下依赖:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.1-SNAPSHOT</version> </dependency>
注意:需额外添加SNAPSHOT仓库,且后续可能出现其他兼容性问题。
内容的提问来源于stack exchange,提问作者Kajal Juwar
相关产品推荐
相关产品推荐

