千家信息网

Spring Boot 2.6.x整合Swagger启动失败报错如何解决

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了Spring Boot 2.6.x整合Swagger启动失败报错如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Boot 2.6.x
千家信息网最后更新 2026年11月02日Spring Boot 2.6.x整合Swagger启动失败报错如何解决

这篇文章主要介绍了Spring Boot 2.6.x整合Swagger启动失败报错如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Boot 2.6.x整合Swagger启动失败报错如何解决文章都会有所收获,下面我们一起来看看吧。

    问题

    Spring Boot 2.6.x版本引入依赖 springfox-boot-starter (Swagger 3.0) 后,启动容器会报错:

    Failed to start bean ‘ documentationPluginsBootstrapper ‘ ; nested exception…

    原因

    Springfox 假设 Spring MVC 的路径匹配策略是 ant-path-matcher,而 Spring Boot 2.6.x版本的默认匹配策略是 path-pattern-matcher,这就造成了上面的报错。

    解决方案

    方案一(治标)

    在 application.properties 配置文件中修改mvc的匹配策略:

    spring.mvc.pathmatch.matching-strategy=ant-path-matcher

    注意:开始的时候我用这个方法的确可以正常启动了,但后来我发现此方法在某些服务启动时会失效!我查了一下才发现这个方法治标不治本,具体如下:

    只有在不使用 Spring Boot 的执行器时,此功能才起作用。

    无论配置的匹配策略如何,执行器将始终使用基于路径模式的解析 ( 也就是默认策略 ) 。

    如果您想在 Spring Boot 2.6及更高版本中将其与执行器一起使用,则需要对 Springfox 进行更改。

    所以解铃还须系铃人呐!要想彻底解决这个bug,需要修改的是 Springfox 。

    方案二(治本)

    这个办法是我在 github 上找到的,一个大佬提了一个解决方案是将 Springfox 的某 .java 文件复制到自己项目里进行修改,另一个大佬提了一个更好的解决方案,我觉得针不戳,在这里分享一下:

    在你的项目里添加这个 bean :(加在配置类里就可)

    @Beanpublic static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {    return new BeanPostProcessor() {        @Override        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {            if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {                customizeSpringfoxHandlerMappings(getHandlerMappings(bean));            }            return bean;        }        private  void customizeSpringfoxHandlerMappings(List mappings) {            List copy = mappings.stream()                    .filter(mapping -> mapping.getPatternParser() == null)                    .collect(Collectors.toList());            mappings.clear();            mappings.addAll(copy);        }        @SuppressWarnings("unchecked")        private List getHandlerMappings(Object bean) {            try {                Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");                field.setAccessible(true);                return (List) field.get(bean);            } catch (IllegalArgumentException | IllegalAccessException e) {                throw new IllegalStateException(e);            }        }    };}

    OK,启动成功!

    补充:springboot集成swagger,启动时抛出如下错误:

    18:03:03.586 [main] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener -
    Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
    18:03:03.601 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -

    ***************************
    APPLICATION FAILED TO START
    ***************************
    Description:
    Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration required a single bean, but 15 were found:
    - modelBuilderPluginRegistry: defined in null
    - modelPropertyBuilderPluginRegistry: defined in null
    - typeNameProviderPluginRegistry: defined in null
    - documentationPluginRegistry: defined in null
    - apiListingBuilderPluginRegistry: defined in null
    - operationBuilderPluginRegistry: defined in null
    - parameterBuilderPluginRegistry: defined in null
    - expandedParameterBuilderPluginRegistry: defined in null
    - resourceGroupingStrategyRegistry: defined in null
    - operationModelsProviderPluginRegistry: defined in null
    - defaultsProviderPluginRegistry: defined in null
    - pathDecoratorRegistry: defined in null
    - relProviderPluginRegistry: defined by method 'relProviderPluginRegistry' in class path resource [org/springframework/hateoas/config/HateoasConfiguration.class]
    - linkDiscovererRegistry: defined in null
    - entityLinksPluginRegistry: defined by method 'entityLinksPluginRegistry' in class path resource [org/springframework/hateoas/config/WebMvcEntityLinksConfiguration.class]

    原因:

    swagger版本问题,我本地springboot版本是2.3.1,引用swaggerb版本为2.2.2,导致项目启动失败

    解决方案:

    更换swagger版本,我这里换成了2.9.2版本,项目启动成功

        io.springfox    springfox-swagger2    2.9.2    io.springfox    springfox-swagger-ui    2.9.2

    关于"Spring Boot 2.6.x整合Swagger启动失败报错如何解决"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Spring Boot 2.6.x整合Swagger启动失败报错如何解决"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

    版本 方案 策略 整合 解决方案 项目 知识 执行器 配置 成功 内容 原因 文件 方法 篇文章 路径 问题 大佬 解铃还须系铃人 治标不治本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技名片 西安纸贵互联网科技有限公司 互联网科技财经 高科技与互联网 互联网科技公司怎么样 互联网金融 科技创新 互联网科技公司有哪些 成都仁贤领冠互联网科技有限公司 山东吉时兔互联网科技有限公司 科技互联网的估值 中国科技互联网公司收入 恒银科技与互联网金融 世界互联网科技公司市值排名 恒生互联网科技指数跳水 浙南科技城互联网大厦建设工程 合肥互联网科技公司公章图片 21世纪互联网科技成就 江苏互联网智能科技产品出厂价 伍佰万互联网科技是干嘛的 中国主要互联网科技公司 博彦科技互联网金融 金融科技创新监管互联网金融 济南和联互联网科技有限公司 深圳市运趣互联网科技有限公司 金融科技与互联网金融相同和不同 互联网金融科技公司干啥的 陕西云淼互联网科技公司 互联网科技接地气 互联网高科技行业有哪些企业 互联网科技收购价值
    0