千家信息网

Springboot2.6.x高版本与Swagger2版本冲突问题怎么解决

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,今天小编给大家分享一下Springboot2.6.x高版本与Swagger2版本冲突问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希
千家信息网最后更新 2025年01月19日Springboot2.6.x高版本与Swagger2版本冲突问题怎么解决

今天小编给大家分享一下Springboot2.6.x高版本与Swagger2版本冲突问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

问题:

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,这就造成了上面的报错。

完整解决方案:

1. pom配置

    org.springframework.boot    spring-boot-starter-web    2.6.4    io.springfox    springfox-boot-starter    3.0.0

2. 添加Bean

import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;import org.springframework.stereotype.Component;import org.springframework.util.ReflectionUtils;import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; import java.lang.reflect.Field;import java.util.List;import java.util.stream.Collectors; @Componentpublic class SwaggerBeanPostProcessor implements BeanPostProcessor {    @Override    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {        if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider)        {            List handlerMappings = getHandlerMappings(bean);            customizeSpringfoxHandlerMappings(handlerMappings);        }        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);        }    }}

3. swagger配置类继承 WebMvcConfigurationSupport

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;import springfox.documentation.service.ApiInfo;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket; @Configurationpublic class Swagger2Config extends WebMvcConfigurationSupport {    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(ApiInfo.DEFAULT);    }     @Override    public void addResourceHandlers(ResourceHandlerRegistry registry) {        registry.                addResourceHandler("/swagger-ui/**")                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")                .resourceChain(false);    }}

4. 访问 http://{ip}:{port}/swagger-ui/index.html

以上就是"Springboot2.6.x高版本与Swagger2版本冲突问题怎么解决"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

版本 知识 篇文章 问题 冲突 内容 策略 面的 配置 不同 很大 原因 大部分 容器 就是 方案 更多 知识点 行业 解决方案 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 web服务器类型在线检测 数据库多级 软件开发过程涉及的库 深圳工控软件开发要多少钱 网络安全宣传工作有关单位 杭州直播软件开发哪家正规 三级数据库模式是什么意思 千与千寻下载软件开发 深圳朝阳网络技术有限公司 聊天服务器设置图片 mysql数据库中长度怎么计算 宝塔怎么上传数据库文件 华为存储连接服务器配置 南京系统软件开发平台 福建惠普服务器维修调试哪家好 信息与网络安全信息通报 win7 服务器管理工具 100M服务器多少钱 主时钟同步服务器地址 连云港网络安全资质申请费用 数据库原理及应用涉及的英语单词 上海基础软件开发培训学校 以网络安全为主题的文稿 淘宝网站用什么软件开发的 网络安全手抄报最简单化的 软件开发app资料 录梦网络技术有限公司 清远网络技术有限公司 记录的地平线 服务器 深圳市创驰云网络技术开发
0