11.Spring Boot 3.1.5 中使用 SpringDoc OpenAPI(替代 Swagger)生成 API 文檔

Spring Boot 3.1.5 中使用 SpringDoc OpenAPI(替代 Swagger)生成 API 文檔


1. 項目結構

假設項目名為 springboot-openapi-demo,以下是項目的基本結構:

springboot-openapi-demo/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── demo/
│   │   │               ├── DemoApplication.java        # 主啟動類
│   │   │               ├── config/                     # 配置類目錄
│   │   │               │   └── OpenApiConfig.java      # OpenAPI 配置類
│   │   │               ├── controller/                 # 控制器目錄
│   │   │               │   └── UserController.java     # 示例控制器
│   │   │               └── model/                      # 模型類目錄
│   │   │                   └── User.java               # 用戶模型類
│   │   └── resources/
│   │       └── application.properties                 # 配置文件
└── pom.xml                                             # Maven 依賴配置

2. 創建 pom.xml 并添加依賴

pom.xml 中添加 Spring Boot 和 SpringDoc OpenAPI 的依賴:

<?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.1.5</version><relativePath/> <!-- 查找父 POM 的位置 --></parent><groupId>com.example</groupId><artifactId>springboot-openapi-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-openapi-demo</name><description>Spring Boot 3.1.5 + SpringDoc OpenAPI 示例</description><properties><java.version>17</java.version> <!-- 指定 JDK 17 --><springdoc-openapi.version>2.3.0</springdoc-openapi.version> <!-- SpringDoc 版本 --></properties><dependencies><!-- Spring Boot Web 依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringDoc OpenAPI UI 依賴(用于生成 Swagger UI) --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>${springdoc-openapi.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

3. 創建主啟動類 DemoApplication.java

src/main/java/com/example/demo/DemoApplication.java 中創建主啟動類:

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Spring Boot 主啟動類* 用于啟動整個應用*/
@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

在這里插入圖片描述

4. 創建 OpenAPI 配置類 OpenApiConfig.java

src/main/java/com/example/demo/config/OpenApiConfig.java 中配置 OpenAPI:

package com.example.demo.config;import io.swagger.v3.oas.models.OpenAPI;
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;/*** OpenAPI 配置類* 用于自定義 API 文檔的元信息(如標題、描述、版本等)*/
@Configuration
public class OpenApiConfig {/*** 自定義 OpenAPI 實例* @return 配置好的 OpenAPI 對象*/@Beanpublic OpenAPI customOpenAPI() {return new OpenAPI().info(new Info().title("Spring Boot 3.1.5 API 文檔") // API 文檔標題.description("這是一個使用 SpringDoc OpenAPI 生成的示例 API 文檔") // 描述.version("1.0") // 版本號.license(new License() // 許可證信息.name("Apache 2.0") // 許可證名稱.url("https://www.apache.org/licenses/LICENSE-2.0"))); // 許可證 URL}
}

在這里插入圖片描述

對應效果:
在這里插入圖片描述

5. 創建用戶模型類 User.java

(/swagger-ui/index.html和/v3/api-docs里都沒看到這個類里的的信息,后面有需要可以研究研究)

src/main/java/com/example/demo/model/User.java 中創建用戶模型類:

package com.example.demo.model;import io.swagger.v3.oas.annotations.media.Schema;/*** 用戶實體類* 用于表示用戶的基本信息*/
@Schema(description = "用戶實體") // 描述該類的用途
public class User {@Schema(description = "用戶 ID", example = "1") // 描述字段的用途和示例值private Long id;@Schema(description = "用戶名", example = "john_doe")private String username;// Getters 和 Setterspublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}
}

在這里插入圖片描述

6. 創建用戶控制器 UserController.java

src/main/java/com/example/demo/controller/UserController.java 中創建用戶控制器:

package com.example.demo.controller;import com.example.demo.model.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;/*** 用戶管理控制器* 提供用戶相關的 RESTful API*/
@RestController
@RequestMapping("/api/users") // 基礎路徑
@Tag(name = "用戶管理", description = "用戶相關的 API 接口") // 分類標簽
public class UserController {/*** 根據用戶 ID 獲取用戶信息* @param id 用戶 ID* @return 用戶信息字符串*/@GetMapping("/{id}")@Operation(summary = "獲取用戶信息", description = "根據用戶 ID 獲取用戶詳情") // 操作描述public String getUser(@PathVariable Long id) {return "User ID: " + id;}/*** 創建新用戶* @param userData 用戶數據(示例中為字符串,實際應為 User 對象)* @return 創建結果*/@PostMapping@Operation(summary = "創建用戶", description = "創建新用戶") // 操作描述public String createUser(@RequestBody String userData) {return "Created user: " + userData;}
}

在這里插入圖片描述
在這里插入圖片描述

對應效果:
在這里插入圖片描述

7. 配置 application.properties

src/main/resources/application.properties 中添加基本配置:
F

# 應用名稱
spring.application.name=springboot-openapi-demo# 服務器端口
server.port=8080# 日志配置(可選)
logging.level.org.springframework=INFO

在這里插入圖片描述

8. 啟動應用并訪問 Swagger UI

  1. 啟動 DemoApplication 主類。
  2. 訪問以下 URL 查看 Swagger UI:
    • http://localhost:8080/swagger-ui.html(SpringDoc 默認路徑)
    • http://localhost:8080/v3/api-docs(查看原始 OpenAPI 3.0 JSON)
      在這里插入圖片描述
      在這里插入圖片描述
      在這里插入圖片描述

9. 代碼注釋說明

  • 類注釋
    • 描述類的用途(如 User 類表示用戶實體)。
  • 方法注釋
    • 描述方法的功能、參數和返回值(如 getUser 方法根據 ID 獲取用戶)。
  • 注解注釋
    • 解釋注解的作用(如 @Tag 用于分類 API,@Operation 用于描述操作)。
  • 配置類注釋
    • 解釋配置的作用(如 OpenApiConfig 用于自定義 API 文檔的元信息)。

10. 總結

  • 依賴:使用 springdoc-openapi-starter-webmvc-ui 替代 springfox
  • 配置:通過 OpenApiConfig 自定義 API 文檔信息。
  • 注解:使用 @Tag@Operation 等注解豐富 API 文檔。
  • 啟動:訪問 http://localhost:8080/swagger-ui.html 查看文檔。

這種方式完全兼容 Spring Boot 3.1.5 和 JDK 17,且功能強大、易于維護。

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

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

相關文章

python入門(1)變量與輸入輸出

一、變量 使用規則 變量名值例子 a13變量名規則 變量名可以用大小寫字母、數字、下劃線。 數字、下劃線不可開頭 例子 name name1 1name name_first _first 二、輸入輸出 輸出print print(*objects,sep"",end"\n") objects:多個要輸出的值 sep:每個…

TS 安裝

TS較JS優勢 1 TS靜態類型編程語言。編譯時發現錯誤 2 類型系統 強化變量類型概念 3 支持新語法 4 類型推斷機制 可以和React框架中的各種hook配合 5 任何地方都有代碼提示 tsc 命令 將TS轉為JS 1 tsc 文件.ts 生成 js文件 2 執行JS代碼

Linux-常用監控工具

以下是對 Linux 系統中常用監控工具&#xff08;netstat、ss、dmesg&#xff09;的系統性介紹&#xff0c;涵蓋其核心功能、典型用法及實際應用場景&#xff0c;幫助您分析系統狀態和內核參數調整后的效果&#xff1a; 1. netstat -s&#xff1a;網絡協議棧統計監控 功能 net…

Linux系統:詳解文件描述符與重定向原理以及相關接口(open,read,write,dup2)

本節重點 從狹義與廣義角度理解文件理解文件描述符掌握open,write,read系統調用理解重定向的概念與原理掌握重定向的指令操作stdout與stderr的比較為什么存在stderr&#xff1f; 一、理解“文件” 1.1 狹義角度 在狹義層面&#xff0c;Linux文件是磁盤或存儲設備上連續或分…

美國市場變局:沃爾瑪95%覆蓋率的3個流量入口重構策略

過去幾年&#xff0c;美國零售市場經歷了極大的變化。電商發展迅猛&#xff0c;加上疫情影響&#xff0c;消費者購物習慣出現轉向。而作為美國零售巨頭&#xff0c;沃爾瑪&#xff08;Walmart&#xff09;憑借高達95%的線下覆蓋率&#xff0c;始終是品牌和賣家不可忽視的渠道。…

一文詳解 Linux下的開源打印系統CUPS(Common UNIX Printing System)

文章目錄 前言一、CUPS 簡介二、CUPS 常用指令解析2.1 安裝 CUPS2.2 啟動/重啟服務2.3 添加打印機&#xff08;核心操作&#xff09;2.4 設置默認打印機2.5 打印文件2.6 查看打印任務2.7 取消打印任務2.8 查看、移除已添加的打印機 三、調試與常見問題3.1 日志查看3.2 驅動問題…

React useCallback函數

應用場景&#xff1a;父組件向子組件傳遞函數類型的props時

python 桌面程序開發簡述及示例

Python桌面程序開發簡述及示例 Python憑借其簡潔的語法和豐富的庫支持,非常適合開發跨平臺的桌面應用程序。本文將介紹Python桌面開發的主要方法,并提供實際代碼示例。 一、Python桌面開發主要方法 1.1 Tkinter(標準庫) Python內置的GUI庫,適合開發簡單桌面應用 1.2 …

數字智慧方案5875丨智慧交通樞紐綜合解決方案(43頁PPT)(文末有下載方式)

篇幅所限&#xff0c;本文只能提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2301_78256053/89575708 資料解讀&#xff1a;智慧交通樞紐綜合解決方案 詳細資料請看本解讀文章的最后內容。 隨著城市化進程的加速和交通需求的不斷增…

企業級分布式 MCP 方案

飛書原文檔鏈接地址&#xff1a;https://ik3te1knhq.feishu.cn/wiki/D8kSwC9tFi61CMkRdd8cMxNTnpg 企業級分布式 MCP 方案 [!TIP] 背景&#xff1a;現階段 MCP Client 和 MCP Server 是一對一的連接方式&#xff0c;若當前 MCP Server 掛掉了&#xff0c;那么 MCP Client 便不…

【AI提示詞】奧卡姆剃刀思維模型專家

提示說明 一位專注于奧卡姆剃刀思維模型的專業人士&#xff0c;擅長將簡潔性原則應用于復雜問題的分析與解決。 提示詞 # Role: 奧卡姆剃刀思維模型專家## Profile - language: 中文 - description: 一位專注于奧卡姆剃刀思維模型的專業人士&#xff0c;擅長將簡潔性原則應用…

2.1 行列式

引言 行列式是線性代數的核心工具&#xff0c;貫穿矩陣運算、特征值計算與微分方程求解。本文系統梳理2.1節核心考點&#xff0c;結合公式速查與典型例題&#xff0c;助你高效突破行列式難點&#xff01; 考點一&#xff1a;數值型行列式計算 1?? 行列式的定義 (1) 定義方…

單詞規律(簡單)

思路和同構字符串那道題一樣。、但是這道題要注意的地方就是&#xff0c;檢查 pattern 和 s 的單詞數量是否一致以及在進行字符串比較的時候應該用equals來進行比較&#xff0c;而不能用“&#xff01;”&#xff0c;“&#xff01;”比較的是對象引用而非內容。 class Soluti…

【C++】認識map和set

目錄 前言&#xff1a; 一&#xff1a;認識map和set 二&#xff1a;map和set的使用 1.set的使用 2.map的使用 三&#xff1a;map的insert方法返回值 四&#xff1a;map的[ ]的使用 五&#xff1a;multiset和multimap 六&#xff1a;map和set的底層數據結構 七&#x…

Mybatis中的一級二級緩存掃盲

思維導圖&#xff1a; MyBatis 提供了一級緩存和二級緩存機制&#xff0c;用于提高數據庫查詢的性能&#xff0c;減少對數據庫的訪問次數。&#xff08;本質上是減少IO次數&#xff09;。 一級緩存 1. 概念 一級緩存也稱為會話緩存&#xff0c;它是基于 SqlSession 的緩存。在同…

uniapp 實現低功耗藍牙連接并讀寫數據實戰指南

在物聯網應用場景中&#xff0c;低功耗藍牙&#xff08;BLE&#xff09;憑借其低能耗、連接便捷的特點&#xff0c;成為設備間數據交互的重要方式。Uniapp 作為一款跨平臺開發框架&#xff0c;提供了豐富的 API 支持&#xff0c;使得在多個端實現低功耗藍牙功能變得輕松高效。本…

OpenSSL應用實踐:嵌入式數據安全實戰指南

文章目錄 OpenSSL應用實踐:嵌入式數據安全實戰指南一、嵌入式安全現狀與OpenSSL適配方案1.1 嵌入式安全挑戰1.2 OpenSSL精簡方案二、開發環境搭建2.1 交叉編譯工具鏈2.2 OpenSSL交叉編譯三、核心功能實現3.1 AES-GCM加密實踐四、實戰項目:安全OTA升級4.1 系統架構4.2 關鍵代碼…

harmonyOS 手機,雙折疊,平板,PC端屏幕適配

由于HarmonyOS設備的屏幕尺寸和分辨率各不相同&#xff0c;開發者需要采取適當的措施來適配不同的屏幕。 1.EntryAbility.ets文件里&#xff1a;onWindowStageCreate方法里判斷設備類型&#xff0c; 如果是pad&#xff0c;需全屏展示&#xff08;按客戶需求來&#xff0c;本次…

跟韓學AiOps系列之2025學MySQL系列_如何在MySQL中開啟和提交事務?!

跟韓學AiOps系列之2025學MySQL系列_如何在MySQL中開啟和提交事務&#xff1f;! 文章目錄 一、事務的基本操作1. 開啟事務2. 執行事務內操作3. 提交事務4. 回滾事務 二、驗證示例&#xff08;適用于 MySQL 5.7&#xff09;步驟 1&#xff1a;準備測試表和數據步驟 2&#xff1a…

Java生成微信小程序碼及小程序短鏈接

使用wx-java-miniapp-spring-boot-starter 生成微信小程序碼及小程序短鏈接 在pom.xml文件中引入依賴 <dependency><groupId>com.github.binarywang</groupId><artifactId>wx-java-miniapp-spring-boot-starter</artifactId><version>4.7…