SpringBoot3.x最簡集成SpringDoc-OpenApi

為什么使用SpringDoc

????????在SpringBoot低版本時一般使用Swagger掃描接口生成Json格式的在線文檔,然后通過swagger-ui將Json格式的文檔以頁面形式展示文檔。可惜遺憾的是swagger更新到3.0.0版本(springfox)后不更新了。

????????SpringBoot3.x以后需要的JDK版本最低為Java17,而Java17的包名在之前的版本中從javax更改為jakarta,導致swagger在SpringBoot3.x版本中完全無法使用,而SpringDoc不同于swagger,在SpringBoot出了3版本以后很快就兼容升級了,換句話說SpringDoc是SpringBoot全系列都支持的。

SpringDoc支持的內容

  • OpenAPI 3的標準實現
  • Spring-boot v3 (Java 17 & Jakarta EE 9)
  • JSR-303支持, 專門針對 @NotNull, @Min, @Max, and @Size.
  • Swagger-ui支持
  • OAuth2 認證流程
  • 本機鏡像打包支持(GraalVM native images)

最簡集成SpringDoc

文檔地址

  1. 創建SpringBoot項目
  2. 引入SpringDoc依賴
<!-- 適用于webmvc的SpringDoc依賴 -->
<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.2.0</version>
</dependency>

該依賴包含swagger-ui和springdoc-openapi-starter-webmvc-api依賴,無需引入其它依賴即可生效。

  1. 創建一個測試接口,添加SpringDoc的注解以生成在線文檔
package com.example.controller;import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 示例接口** @author vains*/
@RestController
@RequestMapping("/example")
@Tag(name = "示例接口", description = "提供示例內容展示SpringDoc集成效果")
public class ExampleController {@GetMapping("/test01")@Operation(summary = "無參查詢接口", description = "hello")public String test01() {return "Hello Spring doc";}@GetMapping("/test02")@Parameter(name = "test02", description = "url參數")@Operation(summary = "查詢參數示例", description = "原樣返回入參")public String test02(String test02) {return test02;}@GetMapping("/test03/{test03}")@Parameter(name = "test03", description = "url參數")@Operation(summary = "url參數示例", description = "原樣返回入參")public String test03(@PathVariable String test03) {return test03;}}
  1. 啟動項目后訪問提供的接口地址

http://127.0.0.1:8080/swagger-ui/index.html

效果圖如下

在線文檔效果圖

Springfox和SpringDoc注解對照表

官方文檔

SpringfoxSpringDoc解釋說明
@Api@Tag描述接口信息
@ApiIgnore@Parameter(hidden = true)@Operation(hidden = true)@Hidden隱藏字段
@ApiImplicitParam@Parameter描述單個參數
@ApiImplicitParams@Parameters描述多個參數
@ApiModel@Schema描述數據模型
@ApiModelProperty(hidden = true)@Schema(accessMode = READ_ONLY)描述屬性,可隱藏
@ApiModelProperty@Schema描述屬性
@ApiOperation(value = "foo", notes = "bar")@Operation(summary = "foo", description = "bar")描述接口操作,包括標題和注釋
@ApiParam@Parameter描述接口方法參數
@ApiResponse(code = 404, message = "foo")@ApiResponse(responseCode = "404", description = "foo")描述接口響應信息,包括狀態碼和消息

附錄

  1. SpringDoc官網
  2. 代碼倉庫:Gitee、Github

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160104.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160104.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160104.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MQ和redis的內部原理一些總結

首先&#xff0c;先知道內部原理&#xff1b;其次&#xff0c;就是查官方文檔實戰了。 但是如果不熟悉內部原理&#xff0c;那么僅僅只是安裝官方文檔&#xff0c;并不能排除跟蹤問題和故障、預防風險等策略&#xff1b; 以下總結圖解&#xff1a;&#xff08;mysql 8.0新增的…

YOLO目標檢測——衛星遙感艦船檢測數據集下載分享【含對應voc、coco和yolo三種格式標簽】

實際項目應用&#xff1a;衛星遙感艦船檢測數據集說明&#xff1a;衛星遙感艦船檢測數據集&#xff0c;真實場景的高質量圖片數據&#xff0c;數據場景豐富&#xff0c;含船一個類別標簽說明&#xff1a;使用lableimg標注軟件標注&#xff0c;標注框質量高&#xff0c;含voc(xm…

Redis的持久化

redis是一個內存數據庫,是把數據存儲在內存中的,而我們知道內存中的數據是不持久的,一旦服務器重啟或者進程重啟,內存的數據就丟失了.為了讓數據達到持久化的效果,就必須把數據寫到硬盤上. redis相對于mysql這樣的關系型數據庫最明顯的優勢就是快.所以為了保證速度快,數據還得…

動態跳過測試用例

動態跳過測試用例 說明 我們可以通過指定環境變量來動態判斷是否執行指定的測試用例設置環境變量有很多種方法&#xff0c;例如命令行方式&#xff0c;格式&#xff1a;--env keyval1,key2val2 &#xff0c;若需要指定多個環境變量則需要逗號來隔開&#xff0c;而不是空格 t…

Live800:企業提升客戶互動體驗,有哪些關鍵因素?

如今&#xff0c;隨著信息時代的不斷發展&#xff0c;企業已經不再是單向的商業機構&#xff0c;他們需要與客戶進行及時的溝通與反饋&#xff0c;從而更好地提升客戶互動體驗&#xff0c;達到營銷和用戶體驗的雙贏局面。那么&#xff0c;企業如何提升客戶互動體驗呢&#xff1…

設計模式——RBAC 模型詳解

1.什么是 RBAC 呢&#xff1f; RBAC 即基于角色的權限訪問控制&#xff08;Role-Based Access Control&#xff09;。這是一種通過角色關聯權限&#xff0c;角色同時又關聯用戶的授權方式。 簡單地說&#xff1a;一個用戶可以擁有若干角色&#xff0c;每一個角色又可以被分配…

Mysql 中如何導出數據?

文章目錄 前言MySQL 導出數據使用 SELECT ... INTO OUTFILE 語句導出數據SELECT ... INTO OUTFILE 語句有以下屬性:導出表作為原始數據導出SQL格式的數據將數據表及數據庫拷貝至其他主機 后言 前言 hello world歡迎來到前端的新世界 &#x1f61c;當前文章系列專欄&#xff1a;…

Linux程序之可變參數選項那些事!

一、linux應用程序如何接收參數&#xff1f; 1. argc、argv Linux應用程序執行時&#xff0c;我們往往通過命令行帶入參數給程序&#xff0c;比如 ls /dev/ -l 其中參數 /dev/ 、-l都是作為參數傳遞給命令 ls 應用程序又是如何接收這些參數的&#xff1f; 通常應用程序都…

Raspberry Pi 5 新一代單板計算機:樹莓派5代 (介紹、入門、解疑)

樹莓派5代正式發布后&#xff0c;硬件和性能的全面升級讓眾多開發者們都想入手感受一波&#xff0c;外觀上Raspberry Pi 5 與前代產品非常相似&#xff0c;不過&#xff0c;在保留信用卡大小的整體尺寸的同時&#xff0c;也更新了一些設計元素&#xff0c;以適應新芯片組的功能…

python實現調和反距離空間插值法AIDW

1 簡介 AIDW 主要是針對 IDW 的缺點進行了改進&#xff0c;考慮了樣本點與預測點的位置&#xff0c;即方向和距離&#xff0c;具體見下圖&#xff1a; 2 改進 IDW 公式&#xff1a; 從IDW算法可看出&#xff0c;插值點的估算值僅與插值樣本距插值點的遠近相關&#xff0c;并未…

貝葉斯AB測試

AB測試是用來評估變更效果的有效方法&#xff0c;但很多時候會運行大量AB測試&#xff0c;如果能夠在測試中復用之前測試的結果&#xff0c;將有效提升AB測試的效率和有效性。原文: Bayesian AB Testing[1] 隨機實驗&#xff0c;又稱AB測試&#xff0c;是行業中評估因果效應的既…

自定義類型:結構體

1.結構體類型的聲明 1.1結構體的概念 結構是?些值的集合&#xff0c;這些值稱為成員變量。結構的每個成員可以是不同類型的變量。 1.2 結構的聲明 struct tag {member-list; }variable-list; 例如描述?個學?&#xff1a; struct Stu {char name[20];//名字int age;//年…

【Mysql】[Err] 1293 - Incorrect table definition;

基本情況 SQL文件描述 /* Navicat MySQL Data TransferSource Server : cm4生產-200 Source Server Version : 50725 Source Host : 192.168.1.200:3306 Source Database : db_wmsTarget Server Type : MYSQL Target Server Version : 50725 File…

vxe編輯保存表格

業務需求&#xff1a; 1、需要點擊編輯時&#xff0c;全部表格顯示編輯框&#xff0c;點擊保存&#xff0c;全部保存。 2、因為位置問題&#xff0c;產品經理把24小時分成了兩行&#xff0c;開發就得分兩個表格。列標題是寫死的&#xff0c;文字偏移也是寫死的&#xff0c;其他…

服務器主機安全的重要性及防護策略

在數字化時代&#xff0c;服務器主機安全是任何組織都必須高度重視的問題。無論是大型企業還是小型企業&#xff0c;無論是政府機構還是個人用戶&#xff0c;都需要確保其服務器主機的安全&#xff0c;以防止數據泄露、網絡攻擊和系統癱瘓等嚴重后果。 一、服務器主機安全的重…

__int128類型movaps指令crash

結論 在使用__int128時&#xff0c;如果__int128類型的內存起始地址不是按16字節對齊的話&#xff0c;有些匯編指令會拋出SIGSEGV使程序crash。 malloc在64位系統中申請的內存地址&#xff0c;是按16字節對齊的&#xff0c;但一般使用時經常會申請一塊內存自己切割使用&#…

Qt的一個無邊界窗口公共類

頭文件&#xff1a; #pragma once #include <QWidget>class CFrameLessWidgetBase :public QWidget { public:CFrameLessWidgetBase(QWidget* p nullptr);~CFrameLessWidgetBase() {}protected:bool nativeEvent(const QByteArray& eventType, void* message, long…

static和extern

1.extern extern 是?來聲明外部符號的&#xff0c;如果?個全局的符號在A?件中定義的&#xff0c;在B?件中想使?&#xff0c;就可以使? extern 進?聲明&#xff0c;然后使?。 即在一個源文件中想要使用另一個源文件&#xff0c;即可通過這個extern來聲明使用。 2.st…

未來制造業的新引擎:工業機器人控制解決方案

制造業正經歷著一場革命性的變革 在這個變革的浪潮中&#xff0c;工業機器人成為推動制造業高效生產的關鍵力量。然而&#xff0c;要發揮機器人的最大潛力&#xff0c;一個強大而智能的控制系統是必不可少的。在這個領域&#xff0c;新一代的工業機器人控制解決方案正嶄露頭角&…

學習MySQL先有全局觀,細說其發展歷程及特點

學習MySQL先有全局觀&#xff0c;細說其發展歷程及特點 一、枝繁葉茂的MySQL家族1. 發展歷程2. 分支版本 二、特點分析1. 常用數據庫2. 選型角度及場景 三、三大組成部分四、總結 相信很多同學在接觸編程之初&#xff0c;就接觸過數據庫&#xff0c;而對于其中關系型數據庫中的…