news 2026/6/9 14:52:06

【后端】【Java】Swagger 与 Spring Boot 2.6+ 版本不兼容的问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【后端】【Java】Swagger 与 Spring Boot 2.6+ 版本不兼容的问题

Spring Boot 2.6+ 修改了路径匹配策略,导致 Springfox Swagger 3.0.0 出现空指针异常,启动后报错如下所示:

2025-12-16 00:00:56 [main] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] 2025-12-16 00:00:56 [main] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-12-16 00:00:56 [main] ERROR o.s.boot.SpringApplication - Application run failed org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) at java.base/java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:937) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:423) at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) at com.example.chapter05.Chapter05Application.main(Chapter05Application.java:13) Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null at springfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionWrapper.java:56) at springfox.documentation.RequestHandler.sortedPaths(RequestHandler.java:113) at springfox.documentation.spi.service.contexts.Orderings.lambda$byPatternsCondition$3(Orderings.java:89) at java.base/java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:473) at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355) at java.base/java.util.TimSort.sort(TimSort.java:220) at java.base/java.util.Arrays.sort(Arrays.java:1307) at java.base/java.util.ArrayList.sort(ArrayList.java:1721) at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:392) at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider.requestHandlers(WebMvcRequestHandlerProvider.java:81) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.withDefaults(AbstractDocumentationPluginsBootstrapper.java:107) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.buildContext(AbstractDocumentationPluginsBootstrapper.java:91) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.bootstrapDocumentationPlugins(AbstractDocumentationPluginsBootstrapper.java:82) at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:100) at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ... 14 common frames omitted

修复方案:

在 application.yml 中添加了以下配置:

spring: mvc: pathmatch: matching-strategy: ant_path_matcher

📝 问题说明

原因:

  • Spring Boot 2.6+ 默认使用 PathPatternParser作为路径匹配策略
  • Springfox Swagger 3.0.0 仍然使用旧的 AntPathMatcher
  • 两者不兼容导致空指针异常

解决办法:
将 Spring MVC 的路径匹配策略改回 ant_path_matcher,使其与 Swagger 兼容。

🚀 现在可以重新启动应用

重启 Chapter05Application 后:
- 应用将正常启动
- Swagger UI 可访问:http://localhost:8080/swagger-ui/
- 所有 RESTful 接口正常工作

如果您不需要 Swagger 文档功能,也可以选择删除 Swagger 相关依赖和配置类。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 4:10:58

三相PWM整流器有限集模型预测电流控制Simulink仿真模型

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

作者头像 李华
网站建设 2026/6/3 22:45:21

火山引擎AI大模型加持!Qwen-Image-Edit-2509助力电商视觉优化

火山引擎AI大模型加持!Qwen-Image-Edit-2509助力电商视觉优化 在电商平台竞争日益激烈的今天,一张高质量、风格统一且信息准确的商品主图,往往能在几秒内决定用户的点击与转化。然而,现实却是:每逢大促,运营…

作者头像 李华
网站建设 2026/6/8 18:37:57

从伦敦谈判桌说起:当世界开始适应中文节奏

从伦敦谈判桌说起:当世界开始适应中文节奏一、谈判桌上的语言革命:中文崛起的标志性时刻(一)从 “被动翻译” 到 “主动定义”:一场无声的规则重构曾几何时,在国际谈判桌上,中国代表往往需要提前…

作者头像 李华
网站建设 2026/6/7 7:29:11

ACE-Step模型支持多风格音乐生成:流行、古典、电子一键切换

ACE-Step模型支持多风格音乐生成:流行、古典、电子一键切换 你有没有试过这样一种场景?在剪辑一段旅行Vlog时,想配一首轻快的吉他民谣;转眼又要做一个科技感十足的产品动画,却需要一曲赛博朋克风的电子合成乐。过去&am…

作者头像 李华
网站建设 2026/6/9 12:25:59

基于OpenSpec标准构建:HunyuanVideo-Foley API设计规范公开

基于OpenSpec标准构建:HunyuanVideo-Foley API设计规范公开 在短视频日均产量突破千万条的今天,一个现实问题愈发凸显:90%的UGC内容仍使用默认背景音乐或无音效,专业级音频制作的高门槛成了内容升级的“隐形天花板”。当用户对沉浸…

作者头像 李华
网站建设 2026/6/9 13:15:32

Linux环境下运行Qwen3-32B的最佳实践配置

Linux环境下运行Qwen3-32B的最佳实践配置 在大模型落地进入“拼工程”的时代,如何在有限的算力预算下实现高性能推理,已成为AI系统工程师的核心课题。尤其当企业面临敏感数据处理、合规审查或高并发服务等需求时,闭源API调用不再可行——私有…

作者头像 李华