返回顶部
首页 > 资讯 > 精选 >Spring Boot 2.6.x整合Swagger启动失败报错如何解决
  • 350
分享到

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

2023-06-29 09:06:30 350人浏览 薄情痞子
摘要

这篇文章主要介绍了spring Boot 2.6.x整合swagger启动失败报错如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Boot 2.6.x

这篇文章主要介绍了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 <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {            List<T> copy = mappings.stream()                    .filter(mapping -> mapping.getPatternParser() == null)                    .collect(Collectors.toList());            mappings.clear();            mappings.addAll(copy);        }        @SuppressWarnings("unchecked")        private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {            try {                Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");                field.setAccessible(true);                return (List<RequestMappingInfoHandlerMapping>) field.get(bean);            } catch (IllegalArgumentException | IllegalAccessException e) {                throw new IllegalStateException(e);            }        }    };}

    OK,启动成功!

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

    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版本,项目启动成功

    <dependency>    <groupId>io.springfox</groupId>    <artifactId>springfox-swagger2</artifactId>    <version>2.9.2</version></dependency><dependency>    <groupId>io.springfox</groupId>    <artifactId>springfox-swagger-ui</artifactId>    <version>2.9.2</version></dependency>

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

    --结束END--

    本文标题: Spring Boot 2.6.x整合Swagger启动失败报错如何解决

    本文链接: https://lsjlt.com/news/323954.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • Spring Boot 2.6.x整合Swagger启动失败报错如何解决
      这篇文章主要介绍了Spring Boot 2.6.x整合Swagger启动失败报错如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Boot 2.6.x...
      99+
      2023-06-29
    • Spring Boot 2.6.x整合Swagger启动失败报错问题的完美解决办法
      目录问题原因解决方案方案一(治标)方案二(治本)总结问题 Spring Boot 2.6.x版本引入依赖 springfox-boot-starter (Swagger 3.0) 后...
      99+
      2024-04-02
    • 启动Spring Boot 项目失败如何解决
      启动Spring Boot 项目失败如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Spring Boot 项目是不是经常失败,显示一大堆的错误信息,如端口重复绑定时...
      99+
      2023-06-06
    • springBoot整合Eureka启动失败的解决方案
      其实springBoot 整合Eureka 是比较简单 ,可是我发现很多人整合后会启动不了,我这里列出比较常见的报错的原因 报:A child container failed d...
      99+
      2024-04-02
    • 怎么解决springBoot整合Eureka启动失败的问题
      这篇文章主要介绍“怎么解决springBoot整合Eureka启动失败的问题”,在日常操作中,相信很多人在怎么解决springBoot整合Eureka启动失败的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
      99+
      2023-06-20
    • nginx启动失败如何解决
      这篇文章主要介绍了nginx启动失败如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nginx启动失败如何解决文章都会有所收获,下面我们一起来看看吧。操作首先nginx不是自己部署,要先启动一下docke...
      99+
      2023-06-29
    • wsa启动失败如何解决
      这篇文章主要介绍“wsa启动失败如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“wsa启动失败如何解决”文章能帮助大家解决问题。方法一: 首先打开“设置”接着进入左边栏的“应用”然后进入右上角...
      99+
      2023-07-02
    • docker启动失败如何解决
      Docker启动失败可能有多种原因,以下是一些常见的解决方法: 检查Docker服务是否已启动:在终端中输入sudo servi...
      99+
      2024-04-02
    • docker启动mysql失败如何解决
      启动Docker中的MySQL失败可能有多种原因,下面是一些常见的解决方法:1. 查看Docker容器日志:使用`docker lo...
      99+
      2023-09-23
      docker mysql
    • mysql启动失败1067如何解决
      MySQL启动失败1067错误一般是由于MySQL配置文件(my.cnf)中的某些配置项出现问题或者MySQL安装文件损坏导致的。解...
      99+
      2023-08-30
      mysql
    • ubuntu启动mysql失败如何解决
      这篇文章主要介绍了ubuntu启动mysql失败如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ubuntu启动mysql失败如何解决文章都会有所收获,下面我们一起来看看...
      99+
      2022-11-30
      ubuntu mysql
    • spring-boot中spring-boot-maven-plugin报红错误如何解决
      这篇文章主要介绍了spring-boot中spring-boot-maven-plugin报红错误如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇spring-boot中spring-boot-maven...
      99+
      2023-07-05
    • 如何解决通过spring-boot-maven-pluginpackage失败问题
      目录1.pom文件示例2.执行mvn package出现异常3.异常堆栈详细信息4.主要问题概述5.解决方案6.修改后pom文件7.再次执行mvn package问题解决总结1.po...
      99+
      2023-05-15
      spring-boot-maven-plugin package失败 spring-boot-maven-plugin package
    • Centos6中Varnish启动失败如何解决
      这篇文章将为大家详细讲解有关Centos6中Varnish启动失败如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Varnish是一款高性能的Web加速器,缓存性能非常好,于是我也学学...
      99+
      2023-06-10
    • Linux httpd apache启动失败如何解决
      本篇内容主要讲解“Linux  httpd apache启动失败如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux  httpd apache启动失败如何解决”...
      99+
      2023-06-10
    • 云主机启动失败如何解决
      云主机启动失败可能有多种原因,可以尝试以下几种解决方法:1. 检查网络配置:确保云主机的网络配置正确,包括IP地址、子网掩码、网关等...
      99+
      2023-09-08
      云主机
    • linux php7-fpm启动失败如何解决
      这篇文章主要介绍“linux php7-fpm启动失败如何解决”,在日常操作中,相信很多人在linux php7-fpm启动失败如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux php7-fp...
      99+
      2023-07-05
    • SpringCloud启动失败问题如何解决
      本篇内容主要讲解“SpringCloud启动失败问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringCloud启动失败问题如何解决”吧!SpringCloud启动失败问题Nac...
      99+
      2023-07-05
    • mysql服务启动失败如何解决
      当MySQL服务启动失败时,可能有多种原因。以下是一些常见的解决方法: 检查MySQL的错误日志,通常位于MySQL安装目录的d...
      99+
      2024-04-09
      mysql
    • 如何使用spring boot整合kafka和延迟启动消费者
      这篇文章给大家分享的是有关如何使用spring boot整合kafka和延迟启动消费者的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。spring boot 整合kafka,延迟启动消费者spring boot整合...
      99+
      2023-06-20
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作