Spring Boot 3项目集成Swagger3教程
Spring Boot 3项目集成Swagger3教程
?? 前言
欢迎来到我的小天地,这里是我记录技术点滴、分享学习心得的地方。??
?? 技能清单
- 编程语言:Java、C、C++、Python、Go、
- 前端技术:Jquery、Vue.js、React、uni-app、Echarts
- UI设计: Element-ui、Antd、Color-ui
- 后端技术:Spring Boot、Mybatis-plus、Swagger
- 移动开发:Android
- 操作系统:Windows、Linux
- 开发框架:RuoYi、微信小程序
- 开发工具:VSCode、IDEA、Eclipse、WebStorm、HbuildX、Navicat、Xshell、Android Studio、Postman
- 数据库技术:MySQL、Redis、SQL Server
- 版本控制:Git
Swagger是一个用于设计、构建、记录和使用RESTful web服务的开源软件框架。Swagger 3(OpenAPI 3.0)提供了更加强大和灵活的API文档生成能力。本教程将指导您如何在Spring Boot 3项目中集成Swagger3,并使用Knife4j作为UI界面。
1. 添加依赖
首先,您需要在项目的pom.xml
文件中添加Swagger3的依赖。同时,为了确保依赖能够正确下载,您可以添加阿里云的Maven镜像仓库。
<!--swagger3--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.1.0</version></dependency><repositories><!--阿里云镜像--><repository><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
2. 配置Swagger
在Spring Boot项目中创建一个配置类SwaggerConfig
,并添加Swagger的配置信息。
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SwaggerConfig {@Beanpublic OpenAPI springShopOpenAPI() {return new OpenAPI().info(new Info().title("标题").contact(new Contact()).description("我的API文档").version("v1").license(new License().name("Apache 2.0").url("http://springdoc.org"))).externalDocs(new ExternalDocumentation().description("外部文档").url("https://springshop.wiki.github.org/docs"));}
}
3. 实体类和控制层注解
在您的实体类和控制层中使用Swagger注解来描述API。
// 实体类注解示例
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;import java.util.Date;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Schema(name = "Employee", description = "$!{table.comment}")
public class Emp {@ExcelProperty("ID")@Schema(description = "ID")private int id;@ExcelProperty("用户名")@Schema(description = "用户名")private String names;@ExcelProperty("工资")@Schema(description = "工资")private double salary;@ExcelProperty("生日")@Schema(description = "生日")private Date birthday;@ColumnWidth(20)@ExcelProperty("头像")@Schema(description = "头像")private String photo;// @ColumnWidth(20)
// @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// @ExcelProperty("创建日期")
// private Date u_create_time;
}// 控制层注解示例
import io.swagger.v3.oas.annotations.Operation;@Operation(summary = "获取所有员工信息")
@GetMapping("/selectAll")
public List<Emp> selectAll() {// ...
}
4. 通用返回结果封装
创建一个通用的返回结果类,用于统一API的响应格式。
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;@Builder(toBuilder = true)
@AllArgsConstructor
@Setter
@Getter
@Slf4j
public class Result<T> {/*** 提示信息*/@Schema(description = "提示信息")private String message;/*** 是否成功*/@Schema(description = "是否成功")private boolean success;/*** 返回状态码*/@Schema(description = "返回状态码")private Integer code;/*** 数据*/@Schema(description = "数据")private T data;public Result() {}public static Result success() {Result Result = new Result();Result.setSuccess(Boolean.TRUE);Result.setCode(ResultCode.SUCCESS.getCode());Result.setMessage(ResultCode.SUCCESS.getMsg());return Result;}public static Result success(String msg) {Result Result = new Result();Result.setMessage(msg);Result.setSuccess(Boolean.TRUE);Result.setCode(ResultCode.SUCCESS.getCode());return Result;}public static Result success(Object data) {Result Result = new Result();Result.setData(data);Result.setSuccess(Boolean.TRUE);Result.setCode(ResultCode.SUCCESS.getCode());Result.setMessage(ResultCode.SUCCESS.getMsg());return Result;}/*** 返回失败 消息** @return Result*/public static Result failure() {Result Result = new Result();Result.setSuccess(Boolean.FALSE);Result.setCode(ResultCode.FAILURE.getCode());Result.setMessage(ResultCode.FAILURE.getMsg());return Result;}/*** 返回失败 消息** @param msg 失败信息* @return Result*/public static Result failure(String msg) {Result Result = new Result();Result.setSuccess(Boolean.FALSE);Result.setCode(ResultCode.FAILURE.getCode());Result.setMessage(msg);return Result;}public static Result failure(Integer code, String msg) {Result Result = new Result();Result.setSuccess(Boolean.FALSE);Result.setCode(code);Result.setMessage(msg);return Result;}public static Result failure(String msg, ResultCode exceptionCode) {Result Result = new Result();Result.setMessage(msg);Result.setSuccess(Boolean.FALSE);Result.setCode(exceptionCode.getCode());Result.setData(exceptionCode.getMsg());return Result;}/*** 返回失败 消息** @param exceptionCode 错误信息枚举* @return Result*/public static Result failure(ResultCode exceptionCode) {Result Result = new Result();Result.setSuccess(Boolean.FALSE);Result.setCode(exceptionCode.getCode());Result.setMessage(exceptionCode.getMsg());return Result;}/*** 返回失败 消息** @param exceptionCode 错误信息枚举* @param msg 自定义错误提示信息* @return Result*/public static Result failure(ResultCode exceptionCode, String msg) {Result Result = new Result();Result.setMessage(msg);Result.setSuccess(Boolean.FALSE);Result.setCode(exceptionCode.getCode());return Result;}}
5. 注解说明
Swagger3的注解与Swagger2有所不同,以下是一些常用注解的对照表:
Swagger2注解
Swagger3注解
注解位置
@Api
@Tag(name = “接口类描述”)
Controller类上
@ApiOperation
@Operation(summary = “接口方法描述”)
Controller方法上
@ApiImplicitParams
@Parameters
Controller方法上
@ApiImplicitParam
@Parameter(description = “参数描述”)
Controller方法上
@ApiParam
@Parameter(description = “参数描述”)
方法参数上
@ApiIgnore
@Parameter(hidden = true) 或 @Operation(hidden = true)
-
@ApiModel
@Schema
DTO类上
@ApiModelProperty
@Schema
DTO属性上
6. 访问Swagger UI
启动您的Spring Boot应用后,您可以通过以下地址访问Swagger UI:
http://localhost:8080/doc.html
http://localhost:8080/swagger-ui/index.html
在这里,您可以查看API文档,测试API接口,并获取相关信息。
?? 获取源代码
- 后端案例:https://gitee.com/bestwishes0203/Front-end-example
- 前端案例:https://gitee.com/bestwishes0203/Back-end-example
?? 联系方式
如果您对我们的项目感兴趣,或者有任何技术问题想要探讨,欢迎通过以下方式与我联系。我非常期待与您交流,共同学习,共同进步!
- 邮箱:2109664977@qq.com
- Gitee:https://gitee.com/bestwishes0203
- GitHub:https://github.com/bestwishes0203
- CSDN:https://blog.csdn.net/interest_ing_/
- 个人博客:访问我的博客
?? 结语
感谢你的访问,如果你对我的技术文章或项目感兴趣,欢迎通过以上方式与我联系。让我们一起在技术的道路上不断前行!??
相关文章:
Spring Boot 3项目集成Swagger3教程
Spring Boot 3项目集成Swagger3教程 ?? 前言 欢迎来到我的小天地,这里是我记录技术点滴、分享学习心得的地方。?? ?? 技能清单 编程语言:Java、C、C、Python、Go、前端技术:Jquery、Vue.js、React、uni-app、EchartsUI设计: Element-u…...

NISP信息安全一级考试200道;免费题库;大风车题库
下载链接:大风车题库-文件 大风车题库网站:大风车题库 大风车excel(试题转excel):大风车excel...

Android ConstraintLayout 约束布局的使用手册
目录 前言 一、ConstraintLayout基本介绍 二、ConstraintLayout使用步骤 1、引入库 2、基本使用,实现按钮居中。相对于父布局的约束。 3、A Button 居中展示,B Button展示在A Button正下方(距离A 46dp)。相对于兄弟控件的约束…...
在网安中什么是白帽子
在网络安全领域,白帽子是指那些专门从事网络安全研究,帮助企业或个人发现并修复安全漏洞的专家。以下是对白帽子的详细解释: 一、定义与角色 白帽子是网络安全领域的术语,通常指那些具备专业技能和知识的网络安全专家。他们的工作…...
软件专业科目难度分级 你输在了哪里?
感想: 我把我们现在软件专业学的东西分了个难度级别 级别描述视角服务对象例子0 基本软件的使用用户-Photoshop wps ssms等1 软件的原理开发者用户各种编程语言2软件的原理的原理开发者开发者各种函数的深层定义,数据结构等 0级就是咱们平时用的那些软…...

微信小程序实现图片拖拽调换位置效果 -- 开箱即用
在编写类似发布朋友圈功能的功能时,需要实现图片的拖拽排序,删除图片等功能。 博主的小程序首页也采用了该示例代码,可以在威信中搜索: 我的百宝工具箱 或者复制后面的🔗在手机打开: #小程序://百宝工具箱/…...
关于“浔川AI翻译”使用情况的调研报告
关于“浔川 AI 翻译”使用情况的调研报告 随着全球化进程加速及外语学习需求攀升,AI 翻译工具愈发普及。“浔川 AI 翻译”作为行业产品之一,为了解其市场表现与用户反馈,特开展本次问卷调查,现将关键结果汇报如下。 一、样本概…...
《芯片:科技之核,未来之路》
《芯片:科技之核,未来之路》 一、芯片的定义与重要性二、芯片的应用领域(一)新能源领域(二)信息通讯设备领域(三)4C 产业(四)智能电网领域(五&…...

️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南20241206
🛠️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南 📝 引言 随着大语言模型(LLM)和人工智能的飞速发展,越来越多的开发者尝试在本地环境中部署大模型进行实验。然而,由于资源需求高、网络限制多…...

使用Tomcat搭建简易文件服务器
创建服务器 1. 复制一个tomcat服务器,并命名为file-service(好区分即可) 2.在webapp里面新建一个文件夹 uploadfiles ,用于存储上传的文件 3. 修改conf/service.xml,配置文件服务器的端口与上传文件夹的访问 在Host标签之间加入一个Context标签 docBase"uploa…...
《C++赋能:构建智能工业控制系统优化算法新引擎》
在工业 4.0 的浪潮汹涌澎湃之际,传统工业控制系统正面临着前所未有的挑战与机遇。如何借助人工智能的强大力量,实现工业控制系统的深度优化,已成为工业领域乃至整个科技界关注的焦点。而 C语言,以其卓越的性能、高效的执行效率和对…...

node.js中跨域请求有几种实现方法
默认情况下,出于安全考虑,浏览器会实施同源策略,阻止网页向不同源的服务器发送请求或接收来自不同源的响应。 同源策略:协议、域名、端口三者必须保持一致 <!DOCTYPE html> <html lang"en"> <head>&l…...

Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,已于近期上市。该书基于Node.js 22.3.0编写,提供26个实战案例43个上机练习,可谓是目前市面上最新的Node.js力作。 本文对《循序渐进Node.js企业级开发实践》一书做个大致的介绍。 封…...
常见排序算法总结 (四) - 快速排序与随机选择
快速排序 算法思想 每一轮在数组相应的范围上随机找一个元素进行划分,将不大于它的所有元素都放到左边,将大于它的元素都放到右边。在左右两个子数组上不断地递归,直到整个数组上有序。 注意:实现时选择的时参考荷兰国旗问题优化…...

Doris的基础架构
Doris的基础架构 Frontend(FE):主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。Backend(BE):主要负责数据存储、查询计划的执行。 我的Github地址,欢迎大家加入我的开…...
python录制鼠标键盘操作循环播放
依赖 pip install pynput 程序: from pynput import mouse, keyboard import time import threading# 用于存储录制的鼠标和键盘事件 mouse_events [] keyboard_events []# 定义事件处理函数# 处理鼠标事件 def on_move(x, y):mouse_events.append((move, x, y))def on_cl…...

标书里的“废标雷区”:你踩过几个?
在投标领域,标书的质量不仅决定了中标的可能性,更是体现企业专业度的关键。但即便是经验丰富的投标人,也难免会在标书编制过程中踩中“废标雷区”。这些雷区可能隐藏在技术方案的细节中,也可能是投标文件格式的规范问题。以下&…...
centos下使用acme来自动获取免费通配符ssl证书,并发布到nginx服务,(DNS服务为阿里云)
参考链接: 官方文档 acme.sh获取证书 # 下载acme的项目 git clone https://gitee.com/neilpang/acme.sh.git # 执行安装脚本 cd acme.sh ./acme.sh --install -m myexample.com # 安装脚本会新增一个定时任务,这个命令可以检查 crontab -l # 从阿里云获取ks,写入 export Ali_…...
基于协同过滤的图书推荐系统 爬虫分析可视化【源码+文档】
【1】系统介绍 研究背景 随着互联网的普及和电子商务的发展,用户可以在线获取大量的图书资源。然而,面对海量的信息,用户往往难以找到自己真正感兴趣的书籍。同时,对于在线书店或图书馆等提供图书服务的平台来说,如何…...
Hyperf jsonrpc
依赖的 composer 包 composer require hyperf/json-rpc composer require hyperf/rpc-server composer require hyperf/rpc-client composer require hyperf/service-governance composer require hyperf/service-governance-consul composer require hyperf/service-gove…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...