Spring Boot 下的Swagger 3.0 與 Swagger 2.0 的詳細對比

先說結論:

????????Swgger 3.0? 與Swagger 2.0? 區別很大,Swagger3.0用了最新的注釋實現更強大的功能,同時使得代碼更優雅。

? ? ? ? 就個人而言,如果新項目推薦使用Swgger 3.0,對于工具而言新的一定比舊的好;對接于舊項目原有Swagger 2.0版本不變就不要變,因為它作為輔助功能能達到你的需求就可以了(當然我一再聲明這只代表我的個人看法,歡迎留言討論)。

一、Maven配置方面差異

Swagger 2.0

 <!-- swagger -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.8.0</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.8.0</version>
</dependency>

Swagger 3.0

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.3.0</version>
</dependency>

配置application.yml? 或者application.properties

application.yml

spring:mvc:pathmatch:matching-strategy: ant_path_matcher

application.properties

spring.mvc.pathmatch.matching-strategy= ant_path_matcher

二、配置類區分

Swagger 2.0

@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket createRestApi(){// 添加請求參數,我們這里把token作為請求頭部參數傳入后端ParameterBuilder parameterBuilder = new ParameterBuilder();  
//		List<Parameter> parameters = new ArrayList<Parameter>();
//		parameterBuilder.name("token").description("令牌")
//			.modelRef(new ModelRef("string")).parameterType("header").required(false).build();
//		parameters.add(parameterBuilder.build());
//		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
//				.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
//				.build().globalOperationParameters(parameters);return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();}private ApiInfo apiInfo(){
//    	return new ApiInfoBuilder()
//    			.title("Kitty API Doc")
//    			.description("This is a restful api document of Kitty.")
//    			.version("1.0")
//    			.build();return new ApiInfoBuilder().build();}}

Swagger 3.0

@Configuration
public class OpenAPIConfig {/*** 這個方法可以不配置會自動去掃描,但配置了更好,因為掃描有了目標性會更快* 這個方法是創建分組* @return*/@Beanpublic GroupedOpenApi publicApi() {String[] paths = {"/**"};String[] packages = {"com.example.test.controller"};//掃描的路徑return GroupedOpenApi.builder().group("public").pathsToMatch(paths).packagesToScan(packages).build();}@Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title("接口文檔標題").description("SpringBoot3 集成 Swagger3接口文檔").version("v1")).externalDocs(new ExternalDocumentation().description("項目API文檔").url("/"));}
}

三、常注解差異

Swagger2.0 與 Swagger 3.0 的注釋對比
注解位置Swagger 2.0Swagger 3.0?
Controller 類@Api@Tag(name="接口名",description="接口描述")
Controller 方法@ApiOperation@Operation(summary =“接口方法描述”)
@ApilmplicitParams@Parameters
Controller 方法上 @Parameters 里@ApiImplicitParam@Parameter(description=“參數描述”)
Controller 方法的參數上@ApiParam@Parameter(description=“參數描述”)
@ApiIgnore@Parameter(hidden = true)?或?@Operation(hidden = true)?或?@Hidden
DTO類上@ApiModel@Schema
DTO屬性上@ApiModelProperty

Swagger 2

? ? ? ? controller代碼

? ? ? ? DTO

?

Swagger 3

????????Controller代碼

@RestController
@Tag(name = "TestController",description = "測試接口")
@RequestMapping(value = "/swaggertest")
public class TestController {@Operation(summary = "測試接口",description = "測試接口")@GetMapping(value = "/noHiddenApi")public String noHiddenApi(@Parameter(name = "id",description = "這個ID代表.......") Integer id){return "noHiddenApi";}
}

? ? ? ? DTO代碼

@Schema(description = "用戶實體類")
public class SysUser {@Schema(description = "用戶id")private Integer id;@Schema(description = "用戶名")private String username;@Schema(description = "密碼")private String password;}

后記

花了近一個小時的時間寫這個文章,如果有問題請留言指正,確對您有幫助請點贊收藏,謝謝觀看。

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

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

相關文章

神經網絡基礎-價格分類案例

文章目錄 1. 需求分析2. 導入所需工具包3. 構建數據集4. 構建分類網絡模型5. 訓練模型6. 模型訓練7. 評估模型8. 模型優化 學習目標&#xff1a; 掌握構建分類模型流程動手實踐整個過程 1. 需求分析 小明創辦了一家手機公司&#xff0c;他不知道如何估算手機產品的價格。為了…

SAP 固定資產常用的數據表有哪些,他們是怎么記錄數據的?

在SAP系統中&#xff0c;固定資產管理&#xff08;FI-AA&#xff09;涉及多個核心數據表&#xff0c;用于記錄資產主數據、折舊、交易等。以下是常用的數據表及其記錄數據的邏輯&#xff1a; 1. ANKT - 資產主數據表 功能&#xff1a;存儲資產主數據的文本描述。 字段&#x…

光伏儲能電解水制氫仿真模型Matlab/Simulink

今天更新的內容為光伏儲能制氫技術&#xff0c;這個方向我之前在21年就系統研究并發表過相關文章&#xff0c;經過這幾年的發展&#xff0c;綠色制氫技術也受到更多高校的注意&#xff0c;本篇博客也是在原先文章的基礎上進行更新。 首先讓大家熟悉一下綠氫制取技術這個概念&a…

Redis 3.2.1在Win10系統上的安裝教程

諸神緘默不語-個人CSDN博文目錄 這個文件可以跟我要&#xff0c;也可以從官網下載&#xff1a;https://github.com/MicrosoftArchive/redis/releases 這個是微軟以前維護的Windows版Redis安裝包&#xff0c;如果想要比較新的版本可以從別人維護的項目里下&#xff08;https://…

基于springboot+vue.js+uniapp技術開發的一套大型企業MES生產管理系統源碼,支持多端管理

企業級智能制造MES系統源碼&#xff0c;技術架構&#xff1a;springboot vue-element-plus-admin 企業級云MES全套源碼&#xff0c;支持app、小程序、H5、臺后管理端 MES指的是制造企業生產過程執行系統&#xff0c;是一套面向制造企業車間執行層的生產信息化管理系統。MES系…

【Redis】Redis事務和Lua腳本的區別

Redis事務 概念 事務&#xff1a;Redis事務是一組命令的集合&#xff0c;這些命令會被序列化地執行&#xff0c;中間不會被其他命令插入。 MULTI/EXEC&#xff1a;Redis事務通過MULTI命令開始&#xff0c;通過EXEC命令執行所有已入隊的命令。 特點 原子性&#xff1a; 事務…

frameworks 之 AMS與ActivityThread交互

frameworks 之 AMS與ActivityThread交互 1. 類關系2. 流程2.1 AMS流程2.1 ActivityThread流程 3. 堆棧 講解AMS 如何和 ActivityThread 生命周期調用流程 涉及到的類如下 frameworks/base/core/java/android/app/servertransaction/ResumeActivityItem.javaframeworks/base/cor…

Jmeter 簡單使用、生成測試報告(一)

一、下載Jmter 去官網下載&#xff0c;我下載的是apache-jmeter-5.6.3.zip&#xff0c;解壓后就能用。 二、安裝java環境 JMeter是基于Java開發的&#xff0c;運行JMeter需要Java環境。 1.下載JDK、安裝Jdk 2.配置java環境變量 3.驗證安裝是否成功&#xff08;java -versio…

如何使用淘寶URL采集商品詳情數據及銷量

一、通過淘寶開放平臺&#xff08;如果有資質&#xff09; 注冊成為淘寶開發者 訪問淘寶開放平臺官方網站&#xff0c;按照要求填寫開發者信息&#xff0c;包括企業或個人身份驗證等步驟。這一步是為了獲取合法的 API 使用權限。 了解商品詳情 API 淘寶開放平臺提供了一系列…

Unity3D中的Lua、ILRuntime與HybridCLR/huatuo熱更對比分析詳解

前言 在游戲開發中&#xff0c;熱更新技術是一項重要的功能&#xff0c;它允許開發者在不重新發布游戲客戶端的情況下&#xff0c;更新游戲內容。Unity3D作為廣泛使用的游戲引擎&#xff0c;支持多種熱更新方案&#xff0c;包括Lua、ILRuntime和HybridCLR/huatuo。本文將詳細介…

QT加載Ui文件信息方法(python)

在 PyQt 或 PySide 中&#xff0c;加載 Qt Designer 生成的 .ui 文件有兩種常見方法&#xff1a; 使用 pyuic 將 .ui 文件轉換為 Python 代碼。動態加載 .ui 文件。 以下是兩種方法的詳細說明和示例代碼。 方法 1&#xff1a;使用 pyuic 將 .ui 文件轉換為 Python 代碼 步驟…

javascript基礎從小白到高手系列一十二:JSON

本章內容 ? 理解JSON 語法 ? 解析JSON ? JSON 序列化 正如上一章所說&#xff0c;XML 曾經一度成為互聯網上傳輸數據的事實標準。第一代Web 服務很大程度上 是以XML 為基礎的&#xff0c;以服務器間通信為主要特征。可是&#xff0c;XML 也并非沒有批評者。有的人認為XML 過…

網絡編程 - - TCP套接字通信及編程實現

概述 TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;是一種面向連接的、可靠的傳輸層協議。在網絡編程中&#xff0c;TCP常用于實現客戶端和服務器之間的可靠數據傳輸。本文將基于C語言實現TCP服務端和客戶端建立通信的過程。 三次握手 在…

2023-2024 學年 廣東省職業院校技能大賽(高職組)“信息安全管理與評估”賽題一

2023-2024 學年 廣東省職業院校技能大賽(高職組“信息安全管理與評估”賽題一&#xff09; 模塊一:網絡平臺搭建與設備安全防護第一階段任務書任務 1&#xff1a;網絡平臺搭建任務 2&#xff1a;網絡安全設備配置與防護DCRS:DCFW:DCWS:DCBC:WAF: 模塊二&#xff1a;網絡安全事件…

thinkphp6 + redis實現大數據導出excel超時或內存溢出問題解決方案

redis下載安裝&#xff08;window版本&#xff09; 參考地址&#xff1a;https://blog.csdn.net/Ci1693840306/article/details/144214215 php安裝redis擴展 參考鏈接&#xff1a;https://blog.csdn.net/jianchenn/article/details/106144313 解決思路&#xff1a;&#xff0…

PT8M2302 觸控 A/D 型 8-Bit MCU

1. 產品概述 PT8M2302 是一款可多次編程&#xff08; MTP &#xff09; A/D 型 8 位 MCU &#xff0c;其包括 2K*16bit MTP ROM 、 256*8bit SRAM、 ADC 、 PWM 、 Touch 等功能&#xff0c;具有高性能精簡指令集、低工作電壓、低功耗特性且完全集 成觸控按鍵功能。為…

如何使用策略模式并讓spring管理

1、策略模式公共接口類 BankFileStrategy public interface BankFileStrategy {String getBankFile(String bankType) throws Exception; } 2、策略模式業務實現類 Slf4j Component public class ConcreteStrategy implements BankFileStrategy {Overridepublic String ge…

前端開發:盒子模型、塊元素

1.border邊框 *{box-sizing:border-box; } //使所有邊框不再撐大盒子模型 粗細 : border-width 樣式 : border-style, 默認沒邊框 . solid 實線邊框 dashed 虛線邊框 dotted 點線邊框 顏色 : border-color div { width : 200px ; height : 200px ; border : …

Nvidia Blackwell架構深度剖析:深入了解RTX 50系列GPU的升級

在CES 2025上&#xff0c;英偉達推出了基于Blackwell架構的GeForce RTX 50系列顯卡&#xff0c;包括RTX 5090、RTX 5080、RTX 5070 Ti和RTX 5070。一段時間以來&#xff0c;我們已經知曉了該架構的各種細節&#xff0c;其中許多此前還只是傳聞。不過&#xff0c;英偉達近日在20…

計算機網絡 (45)動態主機配置協議DHCP

前言 計算機網絡中的動態主機配置協議&#xff08;DHCP&#xff0c;Dynamic Host Configuration Protocol&#xff09;是一種網絡管理協議&#xff0c;主要用于自動分配IP地址和其他網絡配置參數給連接到網絡的設備。 一、基本概念 定義&#xff1a;DHCP是一種網絡協議&#xf…