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) { ListhandlerMappings = 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资料
录梦网络技术有限公司
清远网络技术有限公司
记录的地平线 服务器
深圳市创驰云网络技术开发