首页 > 其他分享 >SpringBoot 2.7.x 整合 swagger2 冲突问题

SpringBoot 2.7.x 整合 swagger2 冲突问题

时间:2023-10-11 09:33:40浏览次数:27  
标签:java SpringBoot springframework swagger2 org DefaultLifecycleProcessor 2.7 Docum

问题描述

SpringBoot2.7.x 版本在整合 swagger2 时抛出异常如下:

复制代码
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
	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.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:935)
	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:732)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:414)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
	at org.xxx.xxx.XXXApplication.main(XXXApplication.java:36)
Caused by: java.lang.NullPointerException: null
	at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:112)
	at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:109)
	at com.google.common.collect.ComparatorOrdering.compare(ComparatorOrdering.java:37)
	at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
	at java.util.TimSort.sort(TimSort.java:234)
	at java.util.Arrays.sort(Arrays.java:1438)
	at com.google.common.collect.Ordering.sortedCopy(Ordering.java:852)
	at springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider.requestHandlers(WebMvcRequestHandlerProvider.java:57)
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper$2.apply(DocumentationPluginsBootstrapper.java:138)
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper$2.apply(DocumentationPluginsBootstrapper.java:135)
	at com.google.common.collect.Iterators$6.transform(Iterators.java:788)
	at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
	at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
	at com.google.common.collect.Iterators$ConcatenatedIterator.hasNext(Iterators.java:1340)
	at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:270)
	at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:234)
	at com.google.common.collect.FluentIterable.toList(FluentIterable.java:617)
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.defaultContextBuilder(DocumentationPluginsBootstrapper.java:111)
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.buildContext(DocumentationPluginsBootstrapper.java:96)
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:167)
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
	... 14 common frames omitted

原因分析

swagger2 与 SpringBoot2.7.x 版本冲突,根本原因是 SpringBoot2.7.x mvc 模块默认路径路由模式 与 swagger2 不同,导致出现不一致。

解决办法

手动配置 mvc 路由映射模式,修改 application.properties 文件如下:

复制代码
#解决 swagger2 不兼容 springboot2.7.x版本问题
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

但是,再次启动 SpringBoot,结果问题却依然存在 :(

看来 SpringBoot2.7.x 与 Swagger2 版本冲突问题并未完全解决。

查看网上所有博客,没有发现任何解决办法,只能采用排除法,一个个依赖进行排除。

最终,终于发现问题所在,原来是 spring-boot-start-actuator 监控模块与 Swaggger2 产生冲突。
注释 spring-boot-start-actuator 模块依赖,如下:

复制代码
        <!-- actuator 功能 -->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-actuator</artifactId>-->
<!--        </dependency>-->

再次运行 SpringBoot,显示 OK:)

   

标签:java,SpringBoot,springframework,swagger2,org,DefaultLifecycleProcessor,2.7,Docum
From: https://www.cnblogs.com/mystarry/p/17756278.html

相关文章

  • springboot配置启动文件的问题
    1、缘由:用sh命令启动bat时出现错误端口号就找错了。  原bat。启动时发现端口是8081,但我的application.properties写的不是8081啊,为什么会找8081,原来是因为如果你用bat快捷方式启动,他会在bat目录下,找到propertity文件,如果用sh启动,则找不到propertity文件,这时springboot会默......
  • springboot整合mybatis中使用分页插件 getTotal为0的原因(本人出现的问题)
      本人将实现分页插件---pagehelper.startpage()放到 ---page<Employee>这条语句的前面就获得到了total的值 ......
  • Java观察者模式-SpringBoot实现观察者模式
    观察者模式一、Java观察者模式Java观察者模式是一种设计模式,用于实现对象之间的一对多依赖关系。在观察者模式中,当一个对象的状态发生变化时,它的所有依赖对象(观察者)都会自动收到通知并进行相应的更新。观察者模式由以下几个核心组件组成:主题(Subject):也称为被观察者或可观察对......
  • springboot部署jar项目
    查询进程: ps-ef|grepjava杀死项目进程: kill-9进程号部署命令liunx:自己创建日志放入nohup.out文件中nohupjava-jarvisPlat-service-2.3.0.230522_CLOUD_RELEASE.jar&  重定向日志文件到service.log文件中nohupjava-jarservice.jar>./lo......
  • SpringBoot整合XXLJob
    目录XXLJob简介特性模块安装调度中心初始化数据库配置启动整合执行器pomymlXxlJobConfig启动执行器实践简单的定时任务在执行器创建任务在调度中心创建执行器在调度中心创建任务带前置和后置处理的定时任务XxlJob注解详解创建带前(后)置处理的任务父子任务父子执行器关联父子任务执......
  • idea系列---【上一次打开springboot项目还好好的,现在打开突然无法启动了】
    问题昨天走的时候项目还能正常启动,今天来了之后突然报下面的错误:Error:Kotlin:ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmetadatais1.7.1,expectedversionis1.1.16.解决方案点击idea:Build>RebuildProject重新......
  • SpringBoot集成WebSocket讲解
    目录1WebSocket1.1简介1.2WebSocket作用和调用1.2.1作用1.2.2js端调用1.3Javax1.3.1服务端1.3.1.1服务端接收1.3.1.2服务端集成1.3.1.3ping和pong消息1.3.2客户端1.3.2.1客户端接收1.3.2.2客户端发送1.4WebMVC1.4.1服务端1.1.4.1服务端接收1.1.4.2服务端集成1.1......
  • SpringBoot之实现Web消息实时消息推送
    目录1实时消息推送1.1消息推送1.2准备sql1.3短轮询1.4长轮询1.4.1简介1.4.2代码示例1.5iframe流1.6SSE1.6.1简介1.6.2与WebSocket区别1.6.3代码示例1.7MQTT1.7.1简介1.7.2为什么要用MQTT协议1.8WebSocket1实时消息推送1.1消息推送推送的场景比较多,比如有......
  • SpringBootWeb案例-2上
    SpringBootWeb案例前面我们已经实现了员工信息的条件分页查询以及删除操作。关于员工管理的功能,还有两个需要实现:新增员工修改员工首先我们先完成"新增员工"的功能开发,再完成"修改员工"的功能开发。而在"新增员工"中,需要添加头像,而头像需要用到"文件上传"技术。当整个员工管理功......
  • swagger2启动报错
    1.添加注解:@EnableSwagger2注解能将swagger的配置文件导入ioc容器,使用容器管理swagger相关的各种核心类,并使我们能通过yml或properties文件能修改默认配置:@Import({Swagger2DocumentationConfiguration.class})public@interfaceEnableSwagger2{}...@EnableSwagger2能......