升级SpringBoot至3.1.0后SpringFox依赖引发启动错误未解决求助
documentationPluginsBootstrapper 启动失败问题 核心原因:SpringFox 3.0.0 不支持 SpringBoot 3.x(SpringBoot 3.x 基于 Spring 6.x,而 SpringFox 最后一个版本3.0.0仅适配到 SpringBoot 2.x,且项目已停止维护)。以下是两种解决思路,优先推荐第一种:
方案一:替换为 SpringDoc OpenAPI(官方推荐替代方案)
SpringDoc 是 Spring 生态下当前活跃维护的 OpenAPI/Swagger 实现,完美支持 SpringBoot 3.x。
移除所有 SpringFox 依赖
从你的 pom.xml(或 build.gradle)中删除所有io.springfox相关的依赖项。添加 SpringDoc 依赖
在 pom.xml 中加入适配 SpringBoot 3.x 的 SpringDoc 依赖:<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.2.0</version> <!-- 可根据SpringBoot 3.1.0选择兼容的最新版本 --> </dependency>迁移 Swagger 配置
如果你之前有自定义的 SpringFox 配置类(比如SwaggerConfig),需要替换为 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接口描述")); } }移除无效配置
删除application.yml中添加的spring.mvc.pathmatch.matching-strategy: ant_path_matcher配置,SpringDoc 原生支持 SpringBoot 3.x 的路径匹配策略。
完成以上步骤后,启动应用即可正常访问 API 文档(默认地址:http://localhost:端口号/swagger-ui.html)。
方案二:临时兼容 SpringFox(不推荐,因项目已停更)
如果暂时不想替换依赖,可通过手动注册 Bean 解决启动问题,但后续可能出现其他兼容性问题:
添加配置类,手动注入
documentationPluginsBootstrapper所需的依赖:import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper; import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; @Configuration public class SpringFoxConfig { @Bean public DocumentationPluginsBootstrapper documentationPluginsBootstrapper( WebMvcRequestHandlerProvider webMvcRequestHandlerProvider, RequestMappingHandlerMapping requestMappingHandlerMapping) { return new DocumentationPluginsBootstrapper(webMvcRequestHandlerProvider, requestMappingHandlerMapping); } }保留之前的
spring.mvc.pathmatch.matching-strategy: ant_path_matcher配置。
但请注意,这种方式只是临时规避启动错误,SpringFox 已停止维护,后续可能出现更多与 SpringBoot 3.x 不兼容的问题,建议尽快迁移到 SpringDoc。
内容的提问来源于stack exchange,提问作者Viraj

