springboot-2.3.3.RELEASE升级2.7.16,swagger2.9.2升级3.0.0过程

一、pom文件版本修改

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.16</version><relativePath/>
</parent>

如果用到了“spring-boot-starter-web”,“spring-boot-starter-validation”,“spring-boot-devtools”,“spring-boot-starter-test”,“spring-boot-test”。。。这些依赖也统一配置为2.7.X。

二、升级swagger相关依赖

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version><!-- 项目里没用到这个google依赖的话 这段可以删掉 --><exclusions><exclusion><groupId>com.google.guava</groupId><artifactId>guava</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>3.0.0</version>
</dependency>
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.21</version>
</dependency>
<dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.5.21</version>
</dependency>

三、swaggerConfig配置

springfoxHandlerProviderBeanPostProcessor方法是为了解决升级3.0.0后控制台报错“Failed to start bean 'documentationPluginsBootstrapper';”的问题,亲测有用。

package com.wyzz.global.config;import com.wyzz.model.constant.SwaggerVersionConstant;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ReflectionUtils;
import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
import springfox.documentation.swagger2.annotations.EnableSwagger2;import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;@Configuration
@EnableOpenApi
public class SwaggerConfig {/** 定义api接口包的扫描路径 */private static  final String SWAGGER_SCAN_PACKAGE = "com.xxx.controller";/** 版本信息 */private static final String API_VERSION = "1.0.0";@Beanpublic BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {return new BeanPostProcessor() {@Overridepublic 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);}}};}@Beanpublic Docket createApi(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_PACKAGE)).paths(PathSelectors.any()).build();}private ApiInfo apiInfo(){return new ApiInfoBuilder().title("Server").description("API接口文档").version(API_VERSION).termsOfServiceUrl("http://localhost:9090/v3").build();}//按版本分组@Beanpublic Docket v100(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("v1.0.0").select().apis(input -> {ApiVersion apiVersion = input.getHandlerMethod().getMethodAnnotation(ApiVersion.class);return apiVersion != null && Arrays.asList(apiVersion.group()).contains("v1.0.0");}).paths(PathSelectors.any()).build();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88488.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-正则表达式-信息提取-滑动窗口-数据分发-文件加载及分析器-浏览器分析-学习笔记

序 欠4前年的一份笔记 &#xff0c;献给今后的自己。 正则表达式 概述 正则表达式&#xff0c;Regular Expression&#xff0c;缩写为regex、regexp、RE等。 正则表达式是文本处理极为重要的技术&#xff0c;用它可以对字符串按照某种规则进行检索、替换。 1970年代&…

一文入门神经网络:神经网络概念初识

神经网络的世界远比你想象得更丰富多元。从基础架构到前沿融合模型&#xff0c;我为你梳理了当前最值得关注的神经网络类型&#xff0c;不仅包括那些“教科书级”的经典模型&#xff0c;也覆盖了正在改变行业格局的新兴架构。以下是系统分类与核心特点总结&#xff1a;一、基础…

线上事故处理记录

线上事故处理记录 一、MySQL 导致的服务器 CPU 飙升 有一天&#xff0c;突然收到了服务器 CPU 飙升的告警信息&#xff0c;打开普罗米修斯查看 CPU 的使用情况&#xff0c;发现 CPU 确实飙升了&#xff0c;下面开始去进行问题定位了。 1. 首先连接到对应的服务器&#xff0c;然…

ParaCAD 笔记 png 图纸标注数据集

ParaCAD-Dataset git lfs install git clone https://www.modelscope.cn/datasets/yuwenbonnie/ParaCAD-Dataset.git https://github.com/ParaCAD/ 不止100g 下个最小的 没有三视图

C#使用Semantic Kernel实现Embedding功能

1、背景 C#开发中&#xff0c;可以通过Semantic Kernel实现本地模型的调用和实现。 本地的Ollama的版本如下&#xff1a;安装的Package如下&#xff1a;2、代码实现 // See https://aka.ms/new-console-template for more information using Microsoft.Extensions.AI; using Mi…

转转APP逆向

APP版本 11.15.0 接口分析 # URL https://app.zhuanzhuan.com/zz/transfer/search# header cookie xxx x-zz-monitoring-metrics feMetricAntiCheatLevelV1 zztk user-agent Zhuan/11.15.0 (11015000) Dalvik/2.1.0 (Linux; U; Android 10; Pixel 3 Build/QQ3A.200805.001) z…

注解与反射的完美配合:Java中的声明式编程实践

注解与反射的完美配合&#xff1a;Java中的声明式编程实践 目录 引言 核心概念 工作机制 实战示例 传统方式的痛点 注解反射的优势 实际应用场景 最佳实践 总结 引言 在现代Java开发中&#xff0c;我们经常看到这样的代码&#xff1a; Range(min 1, max 50)priva…

开源入侵防御系统——CrowdSec

1、简介 CrowdSec 是一款现代化、开源、基于行为的入侵防御系统&#xff08;IDS/IPS&#xff09;&#xff0c;专为保护服务器、服务、容器、云原生应用而设计。它通过分析日志检测可疑行为&#xff0c;并可基于社区协作共享恶意 IP 黑名单&#xff0c;从而实现分布式防御。 其…

imx6ull-裸机学习实验13——串口格式化函数移植实验

目录 前言 格式化函数 实验程序编写 stdio文件夹 main.c Makefile修改 编译下载 前言 在学习实验12&#xff1a;imx6ull串口通信实验&#xff0c;我们实现了 UART1 基本的数据收发功能&#xff0c;虽然可以用来调试程序&#xff0c;但是功能太单一了&#xff0c;只能输出…

CCF-GESP 等级考试 2025年6月认证C++三级真题解析

1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;第1题 8位二进制原码能表示的最小整数是&#xff1a;&#xff08; &#xff09;A. -127 B. -128 C. -255 …

【网络安全】服务间身份认证与授权模式

未经许可,不得转载。 文章目录 问题背景用户到服务的身份认证与授权系统对系统的通信服务与服务之间的通信需求分析Basic Auth(基本身份认证)优点缺点mTLS 证书认证优点缺点OAuth 2.0优点缺点JWS(JSON Web Signature)优点缺点结合 Open Policy Agent 的 JWS 方案优点缺点结…

【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(四)

An evaluation of SVBRDF Prediction from Generative Image Models for Appearance Modeling of 3D Scenes输入3D场景的几何和一张参考图像&#xff0c;通过扩散模型和SVBRDF预测器获取多视角的材质maps&#xff0c;这些maps最终合并成场景的纹理地图集&#xff0c;并支持在任…

Grid网格布局完整功能介绍和示例演示

CSS Grid布局是一种强大的二维布局系统&#xff0c;可以将页面划分为行和列&#xff0c;精确控制元素的位置和大小。以下是其完整功能介绍和示例演示&#xff1a; 基本概念 网格容器&#xff08;Grid Container&#xff09;&#xff1a;应用display: grid的元素。网格项&#x…

学习C++、QT---21(QT中QFile库的QFile读取文件、写入文件的讲解)

每日一言把大目标拆成小步&#xff0c;每天前进一点点&#xff0c;终会抵达终点。QFile读取文件我们记事本要进行读取文件、写入文件、等等的操作&#xff0c;那么这个时候我们的QT有一个QT类叫做QFile这个类的话是专门对于文件操作的&#xff0c;所以我们来学习我们在QT的帮助…

AD736ARZ-R7精密真有效值转换器 高精度测量的首选方案

AD736ARZ-R7精密转换器产品概述AD736ARZ-R7是ADI&#xff08;Analog Devices Inc.&#xff09;推出的一款低功耗、高精度的真有效值&#xff08;RMS&#xff09;转直流&#xff08;DC&#xff09;转换器&#xff0c;采用SOIC-8封装&#xff0c;适用于需要精确测量交流或复杂波形…

【web应用】若依框架前端报表制作与导出全攻略(ECharts + html2canvas + jsPDF)

文章目录前言一、ECharts准备工作1. 检查ECharts安装2. 导入ECharts3. 创建饼图组件4. 模板部分二、报表导出功能实现1. 安装依赖2. 导入依赖3. 完整导出函数实现4. 样式优化三、完整组件实现四、常见问题与解决方案1. 图表截图不完整或模糊2. 图表背景透明3. 导出PDF中文乱码4…

vue3+express联调接口时报“\“username\“ is required“问题

我用node .js的express框架写的登录接口&#xff0c;发现postman可以调通&#xff0c;但是vue3前端报错vue3我发现是我后端node.js的app.js入口文件中配置的解析前端参数的解析中间件和前端请求头中的Content-Type配置不一致的原因 解决方案 因为我后端配置解析表单数据的中间件…

《月亮与六便士》:天才的背叛与凡人救赎的残酷辩证法

当满地六便士成了庸人的火葬场​​毛姆笔下的斯特里克兰德&#xff0c;是一把捅穿中产幻梦的利刃。这个抛妻弃子、背叛友人的证券经纪人&#xff0c;在伦敦客厅的茶香与银勺碰撞声中&#xff0c;突然听见了远方的惊雷——“我必须画画”。如书中所言&#xff1a;​​“在满地都…

vue2往vue3升级需要注意的点(个人建议非必要别直接升级)

将 Vue 2 项目升级到 Vue 3 的过程中&#xff0c;需要重点关注以下几个难点和关键点&#xff1a; 建议小项目直接用vue3重写更快&#xff0c;bug更少 文章目录1. **Composition API 的学习与应用**2. **全局 API 的变更**3. **模板语法的兼容性变化**4. **组件选项和生命周期的…

聚焦数据资源建设与应用,浙江省质科院赴景联文科技调研交流

7月10日上午&#xff0c;浙江省质科院标准化中心副主任蒋建平、应珊婷等一行领导带队莅临景联文科技调研指导工作。双方围绕工业数据展开深度交流。座谈会上&#xff0c;景联文科技详细汇报了数据资源建设与应用方面的成果与规划&#xff0c;介绍了公共数据授权运营与对外合作的…