当前位置: 首页 > news >正文

springboot3版本结合knife4j生成接口文档

1.概述

knife4j官网为:介绍 | Knife4j (xiaominfo.com)icon-default.png?t=O83Ahttps://doc.xiaominfo.com/docs/introduction

初步了解的码友可以初步了解一下官网的如下几个模块:

其中在快速开始模块中,不同的springboot版本都有一个使用的案例demo如下图位置,大家可以点击进去,把对应的代码下载到本地,查看是如何使用和引用knife4j的:

总结下来就是:knife4j是基于swagger优化的、比swagger更好用的接口文档生成器。

2.快速集成springboot

个人bibilailai:

以前可以学习某个不复杂的新知识,我的学习方法是:先去官网了解一些概念性的东西,然后找到快速开始的博客,跟着博客的步骤进行快速集成。

但是这次集成knife4j我按照官网的方式+csdn博客的指引,试过多次,要么报错,要么某些增强功能用不了,多少都会有这样那样的问题。最终把官网的案例demo下载下来,然后在自建测试项目的pom.xml文件中添加和demo中一样的knife4j依赖,这样操作就很丝滑了。也是为以后的学习之路找到了一个新的办法。

2.1 引入依赖

在pom.xml文件中加入如下依赖:

 <dependencyManagement><dependencies><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-dependencies</artifactId><version>4.5.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId></dependency>
</dependencies>

我的整个pom.xml文件为:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.8-SNAPSHOT</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.knife4j</groupId><artifactId>MyKnife4jDemo</artifactId><version>0.0.1-SNAPSHOT</version><name>MyKnife4jDemo</name><description>Demo project for Spring Boot</description><properties><java.version>17</java.version></properties><dependencyManagement><dependencies><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-dependencies</artifactId><version>4.5.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>nexus-maven</id><name>nexus-maven</name><url>https://oss.sonatype.org/content/repositories/snapshots/</url></repository></repositories></project>

2.2 配置文件

2.2.1 添加配置文件

添加配置文件Knife4jConfig.java

@Configuration
@EnableKnife4j
public class Knife4jConfig {@Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title("knife4j-openapi3入门测试").version("1.0").description("knife4j-openapi3项目的接口文档"));}@Beanpublic GroupedOpenApi userAPI() {return GroupedOpenApi.builder().group("用户信息管理").pathsToMatch("/user/**").build();}@Beanpublic GroupedOpenApi userAPIGroup() {return GroupedOpenApi.builder().group("组管理").pathsToMatch("/group/**").build();}
}

2.2.2 appilication.yml配置

#开启增强功能模式
knife4j:enable: true

2.3 使用注解

2.3.1 注解说明

pom中引入的依赖是关于openApi3规范的,所以针对于该规范,对应的注解使用如下:

swagger2规范openApi规范
@Api:定义接口分组名称@Tag(name = “接口类描述述”)
@ApiImplicitParam: 单个参数注释@Operation(summary =“接口方法描述”)
@ApiImplicitParams:多个参数注释@Parameters:多个参数注释
@ApiModel:实体类定义@Parameter:单个参数注释
@ApiModelProperty:实体属性定义@Parameter(hidden = true) :排除隐藏api
@ApiOperation:接口定义@Operation(hidden = true):排除隐藏api
@ApiParam:参数注释@Hidden:排除或隐藏api
@ApiResponse:响应码@Schema:DTO实体DTO实体属性
@ApiResponses:多个响应码
@ApiSort(1):对controller类进行排序
@ApiOperationSupport(order = 2,author = "张三")对接口进行排序,并指明接口作者

2.3.2 注解使用

@RequestMapping("/user")
@RestController
@Tag(name = "用户控制类")
@ApiSort(1)
public class UserController {@GetMapping("/userName")@ApiOperationSupport(order = 2,author = "张三")@Operation(summary = "获取用户名称")public String getUserName() {return "张三";}@GetMapping("/userNo")@ApiOperationSupport(order = 1,author = "李四")@Operation(summary = "获取用户编码")public String getUserNo() {return "167545";}
}

2.4 运行项目

运行项目后,在浏览器输入:localhost:端口号/doc.html就可以访问如下页面了:

3.knife4j增强特性

可直接参考官网。后续更新...

相关文章:

springboot3版本结合knife4j生成接口文档

1.概述 knife4j官网为&#xff1a;介绍 | Knife4j (xiaominfo.com)https://doc.xiaominfo.com/docs/introduction 初步了解的码友可以初步了解一下官网的如下几个模块&#xff1a; 其中在快速开始模块中&#xff0c;不同的springboot版本都有一个使用的案例demo如下图位置&am…...

谈谈 Wi-Fi 的 RTS/CTS 设计

我不是专业的 Wi-Fi 技术工作者。但我可以谈谈作为统计复用网络的 Wi-Fi&#xff0c;通用的网络分布式协调功能在底层是相通的。 从一个图展开&#xff1a; 基于这底层逻辑&#xff0c;共享以太网可以用 CSMA/CD&#xff0c;而 Wi-Fi 只能用 CSMA/CA&#xff0c;区别在 CD(冲…...

JVM 详解

一. JVM 内存区域的划分 1. 程序计数器 程序计数器是JVM中一块比较小的空间, 它保存下一条要执行的指令的地址. [注]: 与CPU的程序计数器不同, 这里的下一条指令不是二进制的机器语言, 而是Java字节码. 2. 栈 保存方法中的局部变量, 方法的形参, 方法之间的调用关系. 栈又…...

【debug】

error info&#xff1a; Error response Error response Error code 401. Message: Unauthorized. requests.exceptions.ConnectionError: HTTPConnectionPool(host‘127.0.0.1’, port9000): Max retries exceeded with url: /test/ (Caused by NewConnectionError(‘&l…...

PCB注意事项

1.记录一下我绘制PCB中遇到的一些坑 4G模块和SIM卡的信号线最好距离短,SIM卡下 不要过线 晶振是高速信号,两根线要尽可能差分,保持长度一直,而且线尽可能加粗,晶振下最好不要有线经过 继电器中间需要间隔 继电器中间挖空,起到隔离作用,绝缘,因为继电器有可能接市电220v 高压…...

Nmap使用指南

目录 nmap命令大全 1. 安装Nmap 2. 基本扫描 2.1 扫描单个IP地址 2.2 扫描指定端口范围 2.3 扫描整个子网 3. 高级扫描 3.1 服务版本检测 3.2 操作系统检测 3.3 脚本扫描 3.4 扫描速度 4. 输出结果 4.1 保存到文件 4.2 格式化输出 5. 注意事项 6. 进一步学习 n…...

社区版Dify 轻松实现文生图,Dify+LLM+ComfyUI

社区版Dify 轻松实文生图&#xff0c;DifyLLMComfyUI Dify 安装可参考这里ComfyUI 其实 比 WebUI更简单更实用DifyComfyUIDifyLLM1. Qwen 通义千问大模型系列2. OpenAI大模型系列3. 本地Ollama搭建 DifyLLMComfyUI Dify 安装可参考这里 这是一个在Dify上实现 文生图的教程&…...

Python - 获取当前函数中的所有参数信息(名称和值)

代码 import inspect import randomclass P:def start(self, p1, p2, p3None, p4None):arg_info inspect.getargvalues(inspect.currentframe())kwargs arg_info.locals # 获取到所有参数print(kwargs)del kwargs["self"]try:self._start(**kwargs)except Except…...

PHP之伪协议

文章目录 PHP伪协议php://协议data://协议file://协议phar://协议zip:// & bzip2:// & zlib://协议 过滤器 题目练习[BJDCTF 2020]ZJCTF&#xff0c;不过如此BaseCTF[week1]Aura酱的礼物 PHP伪协议 file:// — 访问本地文件系统 http:// — 访问 HTTP(s) 网址 ftp:// …...

关于Vue的子组件改变父组件传来的值

一、组件直接传值 大家都知道父子组件传值的方案&#xff0c;有以下几个&#xff0c;不再详细敖述 Props&#xff1a;父组件向子组件传递数据 $emit&#xff1a;子组件通过自定义事件向父组件传递数据 .sync修饰符&#xff1a;一个方便且强大的工具&#xff0c;可以简化父子组…...

jvm排查问题-实践追踪问题 与思路--堆内堆外内存泄漏排查方针

概述 排查问题的一般思路是:现象 ——> 直接原因 ——>根本原因。 从问题现象出发,可以分为 应用逻辑问题、资源使用问题、虚拟机异常: 应用逻辑可能导致报错增加、死锁、程序退出等;资源问题主要集中在CPU上升和内存上升(OOM Kill);虚拟机问题通常包括GC问题、进…...

网络层协议--ip协议

目录 引言 IP协议 协议头格式 16位标识与3位标志与13位片偏移讲解 网段划分(重要) DHCP技术 CIDR技术 特殊的IP地址 广播主机 IP地址的数量限制 私有IP地址和公网IP地址 路由&#xff1a;在复杂的网络结构中, 找出一条通往终点的路线 简单认识路由器 路由表生成算…...

【总结整理】 神经网络与深度学习 邱锡鹏 课后习题答案 扩展阅读链接

本文主要针对神经网络神经网络邱锡鹏 2~8 章的课后习题进行理解的过程中&#xff0c;搜索到的讲的会比较透彻的链接整理。适合有一定基础但是想了解更细的人阅读。 主要参考书籍 首先是本书pdf可在神经网络与深度学习获取&#xff1b; 主要参考的课后习题答案为nndl/solution…...

使用 Three.js 创建一个 3D 人形机器人仿真系统

引言 在这篇文章中&#xff0c;我们将探讨如何使用 Three.js 创建一个简单但有趣的 3D 人形机器人仿真系统。这个机器人可以通过键盘控制进行行走和转向&#xff0c;并具有基本的动画效果。 技术栈 HTML5Three.jsJavaScript 实现步骤 1. 基础设置 首先&#xff0c;我们需要…...

图像修复和编辑大一统 | 腾讯北大等联合提出BrushEdit:BrushNet进阶版来了

文章链接&#xff1a;https://arxiv.org/pdf/2412.10316 项目链接&#xff1a;https://liyaowei-stu.github.io/project/BrushEdit 亮点直击 提出了BrushEdit&#xff0c;这是先前BrushNet模型的高级迭代版本。BrushEdit通过开创基于修复&#xff08;inpainting&#xff09;的图…...

【hackmyvm】Adroit靶机wp

tags: HMVjava反编译SQL注入 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. java反编译4. sql注入5. 解密密码6. 提权 靶机链接 https://hackmyvm.eu/machines/machine.php?vmAdroit 作者 alienum 难度 ⭐️⭐️⭐️⭐️️ 2. 信息收集 ┌──(root㉿kali)-[~] └…...

【Python运维】自动化备份与恢复系统的实现:Python脚本实战

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着信息化进程的加速,数据的重要性日益增加,数据丢失的风险也随之增加。为了保证数据安全,定期备份和及时恢复数据是必不可少的操作。本…...

Goland 安装与使用

GoLand安装 官方网址&#xff1a; JetBrains GoLand&#xff1a;不只是 Go IDE 1. 进入官网&#xff0c;点击下载&#xff1a; ​ 2. 如下图一步步安装 ​ ​ ​ ​ ​ 3. 如下图一步步安装...

vue2 升级为 vite 打包

VUE2 中使用 Webpack 打包、开发&#xff0c;每次打包时间太久&#xff0c;尤其是在开发的过程中&#xff0c;本文记录一下 VUE2 升级Vite 步骤。 安装 Vue2 Vite 依赖 dev 依赖 vitejs/plugin-vue2": "^2.3.3 vitejs/plugin-vue2-jsx": "^1.1.1 vite&…...

FreeSwitch中启用WebRTC

在FreeSwitch中启用WebRTC需要进行一系列配置。以下是详细的步骤&#xff1a; 1. 安装必要的依赖&#xff1a; 确保安装了支持WebRTC的依赖库&#xff0c;如libsrtp。 2. 配置SIP Profile&#xff1a; 编辑 conf/sip_profiles/internal.xml 文件&#xff0c;添加或修改以下内…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...