首页 > 其他分享 >springboot2.6x集成swagger2踩坑点

springboot2.6x集成swagger2踩坑点

时间:2024-06-12 20:33:00浏览次数:12  
标签:springboot2.6 springboot 坑点 MATCHER swagger2 ANT swagger public

最近在用springBoot2.6.13集成swagger2.9.2时出现了几个bug,经过几番尝试后,得出了最终的结论,时间紧可以直接看结论。

首次集成swagger2时,启动springboot后的bug:

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

经过网上查找发现: springboot版本与swagger2不兼容导致的问题。

第一个解决方案:降低springboot版本为2.5.5

第二个解决方案:升级swagger2为3

其实这两种都不太方便,牵一发而动全身,不采取。

经过翻阅springBoot2.6源码,发现底层的路径匹配变量有了变化:

2.6.0开始使用基于PathPatternParser的路径匹配,而Springfox版本一直没有更新还是使用的AntPathMatcher导致了这个问题。

所以有了第三种解决方案:将SpringBoot路径匹配模式进行修改

修改yaml文件,yaml的配置如下:

spring:
  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER

或者修改properties文件配置:

spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

其他解决方案:首先在启动类上使用注解@EnableWebMvc,其次在swagger配置类中需要添加WebMvcConfigurerAdapter方法,但是这样有个弊端:springBoot提供的自动化功能都失效了,因为@EnableWebMvc会全部接管springboot的webMvcXConfiguer。

@Configuration
@EnableSwagger2
public class swaggerConfig {
		@Bean
    public WebMvcConfigurerAdapter webMvcConfigurerAdapter() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addResourceHandlers(ResourceHandlerRegistry registry) {
                registry.addResourceHandler("/swagger-ui.html**")
                        .addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
                registry.addResourceHandler("/webjars/**")
                        .addResourceLocations("classpath:/META-INF/resources/webjars/");
            }
        };
    }
}    

总结:为了兼容swagger2,在不必降低springBoot2.6版本的情况下,修改SpringBoot底层的springMVC的路径匹配模式为ANT_PATH_MATCHER。

参考资料:https://springboot.io/t/topic/4972

标签:springboot2.6,springboot,坑点,MATCHER,swagger2,ANT,swagger,public
From: https://www.cnblogs.com/container-simple/p/18244658

相关文章

  • [干货]鸿蒙next适用于api11,12,鸿蒙+支付宝支付整体流程以及坑点
         我在做这个功能支付的时候,一共是涉及到三个主体之间的通信,现在分享给家人们,分别是我们的客户端,我们自己的服务器,以及三方的支付宝服务器;我们前端做的就是头和尾两个部分,在头上呢我会跟我们自己的服务器进行交付,我会发起一个请求,我用的是一个web组件模拟了一个ge......
  • kafka 偏移量坑点
    auto.offset.reset值含义解释earliest当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费latest当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据nonetopic各分区都存在已提交的offset时,从offset后......
  • jackson解析xml坑点
    为了获取xml数据,在springmvc中针对@ResponseBody配置了jackson。刚用的时候内心是狂喜的,终于不用自己解析了………… but…………………………还是有坑的……坑一:大小写问题@JacksonXmlProperty(localName="Apid")privateIntegerApid;privateIntegergetApid(){ ......
  • springmvc+swagger2+struts2
    jar包<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.7</version> </dependency> <dependency> <groupId>com.fasterxml.ja......
  • jmeter:测试片段使用的踩坑点
    1.坑点:测试片段保存后含有两层【测试片段】,这样引用测试片段是不会成功的,检查方法:打开测试片段看看是否只有一个层级测试片段 2.测试片段的正确使用步骤 方法1:选中多个请求或者配置元件>鼠标右键,保存为测试片段(测试实施过程中最常用的方法) 方法2:添加测试片段>将多个请求......
  • Spark SQL 抽样函数 ——TABLESAMPLE 的坑点
    最近需要实现一段SparkSQL逻辑,对数据集进行抽样指定的行数。由于数据集较大,刚开始的逻辑是,取窗口函数随机排序后row_number的前n行。但运行速度较慢,所以想起了TABLESAMLE函数,支持直接取Rows,尝试后发现速度特别快,基本上几秒内就完成对亿级数据的采样。所以好奇就去查......
  • electron集成第三方视频会议(整个目录资源含exe)进来,开发/打包坑点集锦
    场景:electron做个welink那种会议功能,需要集成第三方去进入会议,需要做的是在electron里面打开这个通道对方给了一个文件夹,里面含有.exe,需要调用shell命令去打开这个exe传些参数1.把整个会议文件夹放在/resources下主要是记住三个环境变量的路径方法(因为在electron中所以得看el......
  • @JSONField 坑点 结论:若属性是私有的,必须有set*方法。否则无法反序列化。
    @JSONField坑点结论:若属性是私有的,必须有set*方法。否则无法反序列化。@JSONField坑点结论:若属性是私有的,必须有set*方法。否则无法反序列化。原因:主要原因是JSONField注解是通过反射来操作对象的属性的,而在Java类中一般情况下,字段是私有的,不能直接访问。所以需要......
  • Mybatis批量插入——踩坑点
    最近在进行批量插入,并且返回id的时候,遇到了几个比较抽象的点,首先,是mybatis版本不对,3.3.1之后才支持批量插入返回主键,所以在主键为null的时候,先检查mybatis版本。之后就是检查数据库中的id是否是自增的,如果不是,是否是雪花算法,当然雪花算法就不在本文中详述了。其次,在insert返回主......
  • springboot2.6开始禁止循环依赖了
    参考文章: https://mp.weixin.qq.com/s?__biz=MzI0MTUwOTgyOQ==&mid=2247497189&idx=1&sn=0f03cdafad9bacef66c64a490b85ff23&scene=21#wechat_redirect使用了SpringBoot2.6及以上版本的,如果要允许循环依赖,可以作如下设置:方案二:允许循环引用此方案更像是绕过问题而非解决问题......