Spring Boot升级至2.7.0后启动报错致测试用例全失败如何解决
问题原因
Spring Boot 2.7.0版本默认将Spring MVC的路径匹配实现从AntPathMatcher替换为PathPatternParser,你引入的springfox 3.0.0版本没有适配这个变更,初始化文档插件时会读取空的路径匹配条件对象,直接触发空指针报错。
另外你的依赖中同时存在Springfox、Springdoc两个功能完全重叠的Swagger/OpenAPI实现,本身就存在依赖冲突、资源路径冲突的隐患。
修复方法
方案1(长期推荐)
Springfox已经停止维护多年,不会适配高版本Spring Boot,直接移除所有Springfox相关依赖,仅保留维护活跃的Springdoc即可:
- 打开
build.gradle,删除以下两行依赖配置:
implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '3.0.0' implementation 'io.springfox:springfox-boot-starter:3.0.0'
- 你当前引入的
springdoc-openapi-ui:1.6.9原生兼容Spring Boot 2.7.x版本,删除依赖后重新构建项目即可正常启动,Swagger页面默认访问路径为/swagger-ui.html。
方案2(临时兼容)
如果短期无法完成Springdoc迁移,可修改配置将Spring MVC路径匹配策略切回旧实现,绕过Springfox的兼容问题:
如果使用application.yml配置,添加如下内容:
spring: mvc: pathmatch: matching-strategy: ant_path_matcher
如果使用application.properties配置,添加如下内容:
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
注意:该方案仅为临时兼容手段,后续Spring Boot更高版本会逐步下线AntPathMatcher相关支持,长期运行仍建议迁移到Springdoc。
额外排查点
不要在同一个项目中同时保留Springfox和Springdoc依赖,即使解决了当前启动报错,也可能出现接口重复扫描、文档字段错乱、静态资源拦截等异常问题。
内容的提问来源于stack exchange,提问作者AfTech
相关产品推荐
相关产品推荐

