SpringBoot 集成Swagger3

说明:

1)、本文使用Spring2 集成Swagger3, 本想使用Springboot3+ jdk 17 集成Swagger3,  但是搜了一些资料,Spring 想引用swagger3 需要依赖降级使用Spring2 版本,不然会出现下图的报错信息, 或者使用Spring3 + springdoc 实现swagger的功能,可看SpringBoot3 集成Springdoc 实现Swagger3功能-CSDN博客;

2)、本文功能可通过配置文件实现swagger的开启与关闭,默认token的开启、设置

1、引包

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</version></parent><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><springfox.swagger3.version>3.0.0</springfox.swagger3.version></properties><dependencies><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>${springfox.swagger3.version}</version></dependency><!-- 美化引用--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency></dependencies>

2、配置

import com.google.common.collect.Sets;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.ArrayList;
import java.util.List;/*** Swagger3* 目前springboot3对swagger3 版本有要求,使用3需要Springboot降到2* 原生地址 http://www.xx.xx/swagger-ui/index.html* 美化地址 http://www.xx.xx/doc.html* swagger2 地址http://www.xx.xx/swagger-ui.html*/
@EnableOpenApi
@Configuration
public class Swagger3 {@Value("${swagger.enable}")private boolean enableSwagger = true;@Value("${swagger.token}")private String token = "X_TOKEN";@Value("${swagger.enable-token}")private boolean enableToken = true;/*** API 页面展示信息*/private ApiInfo apiInfo() {return new ApiInfoBuilder()// 标题.title("接口文档")// 描述.description("测试接口文档,发布: http://www.xx.xx/swagger-ui/index.html")// 作者.contact(new Contact("zc", "", "xxx@qq.com"))// 版本.version("版本号:V1.0").build();}@Beanpublic Docket createRestApi() {Docket docket = new Docket(DocumentationType.OAS_30).pathMapping("/")// 定义是否开启swagger.enable(enableSwagger)// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息).apiInfo(apiInfo())// 设置哪些接口暴露给Swagger展示.select()// 扫描所有有注解的api.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))// 扫描指定包中的swagger注解
//				.apis(RequestHandlerSelectors.basePackage("com.zc.controller")).paths(PathSelectors.any()).build()// 支持的通讯协议集合.protocols(Sets.newHashSet("http", "https"));if (enableToken) {// 授权信息设置,必要的header token等认证信息docket.securitySchemes(securitySchemes())// 授权信息全局应用.securityContexts(securityContexts());}return docket;}/*** 设置授权信息*/private List<SecurityScheme> securitySchemes() {List<SecurityScheme> securitySchemes = new ArrayList<>();securitySchemes.add(new ApiKey(token, token, In.HEADER.toValue()));return securitySchemes;}/*** 授权信息全局应用*/private List<SecurityContext> securityContexts() {List<SecurityContext> securityContexts = new ArrayList<>();securityContexts.add(SecurityContext.builder().securityReferences(securityReferences()).forPaths(PathSelectors.any()).build());return securityContexts;}private List<SecurityReference> securityReferences(){List<SecurityReference> securityReferences = new ArrayList<>();securityReferences.add(new SecurityReference(token,new AuthorizationScope[]{new AuthorizationScope("global", "accessEverything")}));return securityReferences;}
}

3、配置文件说明

swagger:enable: trueenable-token: truetoken: X_TOKEN

4、controller

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author zc* @date 2024/2/23 13:29* @desc*/
@RestController
@RequestMapping("/test")
@Api(value = "测试接口", tags = "测试接口")
public class TestController {@GetMapping("/get")@ApiOperation(value = "webClient", notes = "webClient")public String test(){return "ok";}
}

5、展示

注意: 原生swagger3 地址和swagger 2 有所不同:http://www.xx.xx/swagger-ui/index.html

美化地址:http://www.xx.xx/doc.html

6、参考

SpringBoot整合Swagger3_springboot集成swagger3-CSDN博客

基于SpringBoot3从零配置SpringDoc_springdoc springboot3-CSDN博客

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

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

相关文章

python笔记 | 哥德巴赫猜想

哥德巴赫猜想&#xff1a;每个不小于6的偶数都可以表示成两个素数之和。 素数&#xff1a;只能被1和自身整除的正整数。就是大于1且除了1和它本身之外没有其他因数的数。例如&#xff0c;2、3、5、7、11等都是素数&#xff0c;而4、6、8、9等则不是素数。 下面这段Python代码…

Python学习(四)文件操作

文件操作 想想我们平常对文件的基本操作&#xff0c;大概可以分为三个步骤(简称文件操作三步走): ① 打开文件 ② 读写文件 ③ 关闭文件 注意:可以只打开和关闭文件&#xff0c;不进行任何读写 在Python&#xff0c;使用open函数&#xff0c;可以打开一个已经存在的文件&…

【Java】处理工具类详解

在Java开发中&#xff0c;日期和时间的处理是一个绕不开的话题。Java自身提供了丰富的API来处理日期和时间&#xff0c;但是使用起来可能较为繁琐。因此&#xff0c;许多开发者会使用一些工具类来简化日期和时间的处理。本文将介绍一个常用的日期处理工具类——DateUtils&#…

环形链表的约瑟夫问题(牛客网)

/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param n int整型 * param m int整型 * return int整型*/struct ListNode * BuyNode(int n)//创建节点和成环{ struct ListNode *pheadNULL;struct ListNode *ptailN…

吐血整理!跨境电商全年选品方向!一年12个月热点解析

一月 演出服、礼盒、贺卡、装饰品、彩带、拉花、红地毯、邀请函、荧光棒、泡泡机等。 二月 超级碗&#xff1a;投影仪、蓝牙音箱、超级碗电子游戏、望远镜、运动类产品等&#xff1b; 情人节&#xff1a;珠宝、服饰饰品、巧克力、香水、口红、烘焙用品、礼盒、个人护理、成…

MySQL常用命令和函数的讲解以及表之间的联结

Mysql的中一些语句的用法&#xff1a; 有表&#xff1a; CREATE TABLE book (id int(20) NOT NULL,book_name varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 书名,press varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NUL…

pymavlink 解析自定义mavlink消息。

1.下载mavlink_master包&#xff0c;用于将xml 文件生成对应的py文件。地址是 https://codeload.github.com/mavlink/mavlink/zip/refs/heads/master 进入目录运行python .\mavgenerate.py 呈现gui程序 2.根据发送端的消息定义格式修改接收解析段的pymavlink有关库。 可修改……

基于大数据的手机销售数据分析可视化系统,爬取京东和淘宝的的手机商品数据进行分析,Flask,Python,数据可视化

介绍 该系统主要是通过爬取京东和淘宝的的手机商品数据进行分析。爬虫python脚本通过打开浏览器授权登录后按照搜索“手机”关键字后出现的商品列表进行爬取&#xff0c;获取标题名&#xff0c;解析付款人数&#xff0c;品牌&#xff0c;评论人数&#xff0c;发货地&#xff0…

算法学习——LeetCode力扣补充篇14(179. 最大数、43. 字符串相乘、32. 最长有效括号、543. 二叉树的直径、113. 路径总和 II)

算法学习——LeetCode力扣补充篇14 179. 最大数 179. 最大数 - 力扣&#xff08;LeetCode&#xff09; 描述 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&…

吴恩达2022机器学习专项课程(一) 第二周课程实验:特征缩放和学习率(多元)(Lab_03)

备注&#xff1a;笔者只对个人认为的重点代码做笔记&#xff0c;其它详细内容请参考吴恩达老师实验里的笔记。 1.多元特征的训练集 调用load_house_data()函数&#xff0c;将训练集数据保存到数组中。 X&#xff0c;y分别存储所有训练样本的前四列&#xff0c;所有训练样本的…

python中的列表、元组、字典、集合(集合篇)

数据类型定义符号访问元素是否可变是否重复是否有序列表 [ ]索引可变可重复有序元组&#xff08;&#xff09;索引不可变可重复有序字典{key&#xff1a;value}键可变可重复无序集合{ }可变不可重复无序 基本概念 python语言中的集合是无序的、可变的容器类对象&#xff0c;所…

4.16作业

1.总结keil5下载代码和编译代码需要注意的事项 一、在编译代码时需要先点击魔术棒点击 修改flash Downlond 和pack 二、可以通过F12转跳到对应的函数中&#xff0c;查看函数的原型 三、注释出现乱码通过 Edit中的中的来修改 四、要先bulid在load 2.总结STM32Cubemx的使用方…

NLP学习(1)-搭建环境

前言 仅记录学习笔记&#xff0c;如有错误欢迎指正。 环境搭建 一、环境软件安装&#xff1a; 1、Anaconda安装&#xff08;一款可以同时创建和管理多个python环境的软件&#xff09; (1) 安装链接&#xff1a; https://blog.csdn.net/m0_61531676/article/details/126290…

【python】描述性统计计算偏斜度和峭度

文章目录 1.编写计算偏斜度和峭度的函数。并用自己编写的函数计算课本23页的习题1.5数据的偏斜度和峭度。2.从1.5数据中随机抽取2个容量为20的样本&#xff0c;分别计算它们的平均数和标准差3.请绘制给定数据的频率分布直方图&#xff0c;计算数据的均值、标准差、偏斜度和峭度…

Ribbon 添加右侧区域菜单项

效果图如下所示&#xff1a; 类似与上图效果所示&#xff0c;代码如下&#xff1a; RibbonPage* pageHome1 ribbonBar()->addPage(tr("Home")); //实现代码&#xff1a; { QMenu* menuOptions ribbonBar()->addMenu(tr("Options"))…

古籍数字化平台:精校功能介绍

一、平台介绍 古籍数字化平台&#xff0c;本着公益性、低成本、合作共赢的三大原则&#xff0c;功能涵盖古籍OCR识别、族谱县志OCR识别、民国报纸OCR识别、图文逐字校对、数据著录、智能标点分段、精编排版、智能白话译文等&#xff0c;是一站式线上整理全流程平台。 平台集成…

C语言 【基础语法】

一、编程环境搭建 编译器&#xff1a;gcc 集成开发环境&#xff1a;vscode 1.1 安装vscode 1.2 设置中文包 插件 1.3 设置C/C扩展 安装 C/C Compile Run extension 和 C/C Extension Pack 扩展 二、基础语法 2.1 第一个c语言程序 2.2 数据类型 2.2.1 变量的语法(重点) …

漏洞及漏洞管理

01 漏洞基础 原则上&#xff0c;漏洞是指系统或网络中的一个脆弱点&#xff0c;其可能会被网络犯罪分子利用&#xff0c;以获得未经 授权的访问&#xff0c;从而造成破坏。漏洞利用之后会发生什么呢&#xff0c;谁也说不准——安装恶意软件、 窃取敏感数据、利用恶意代码造成…

【QT进阶】Qt Web混合编程之QWebEngineView基本用法

往期回顾 【QT入门】Qt自定义控件与样式设计之自定义QTabWidget实现tab在左&#xff0c;文本水平的效果-CSDN博客【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用-CSDN博客 【QT进阶】Qt Web混合编程之QWebEngi…

node.js-fs模块、path模块

fs模块-读写文件 模块&#xff1a;类似插件&#xff0c;封装了方法/属性 fs模块&#xff1a;封装了与本机文件系统进行交互的&#xff0c;方法/属性 语法&#xff1a; 1&#xff09;加载fs模块对象 const fsrequire(fs)//fs 是模块标识符&#xff1a;模块的名字 2&#x…