SpringBoot3使用Swagger3的示例詳解
項(xiàng)目中的后端接口進(jìn)行簡(jiǎn)單的前端展示
Swagger是一個(gè)用于設(shè)計(jì)、構(gòu)建、文檔化和使用RESTful Web服務(wù)的開源工具。Swagger3是Swagger的最新版本,它提供了許多新功能和改進(jìn)。
Swagger在SpringBoot3中的引入方法發(fā)生了改變,網(wǎng)上大部分還是SpringBoot2的版本
springboot版本3.2.4
一、依賴引入
用maven構(gòu)建一個(gè)SpringBoot3的項(xiàng)目,在依賴中引入,在pom.xml中添加
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.4</version>
</dependency>版本也可以使用新版,Springdoc-OpenAPI網(wǎng)站鏈接
二、快速啟動(dòng)
1.在application.yml中配置
# swagger-ui custom path
springdoc:
swagger-ui:
path : /swagger-ui.html2.或者properties文件,則配置
代碼如下(示例):
# swagger-ui custom path springdoc.swagger-ui.path=/swagger-ui.html
3.啟動(dòng)項(xiàng)目訪問swagger
訪問http://localhost:9090/swagger-ui/index.html#/
其中的9090 改成你項(xiàng)目后端使用的端口,注意不能省略后面的index.html
三、使用注解標(biāo)注接口
Swagger配置文件
package com.sumo.ipd.config;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Swagger3Config {
@Bean
public OpenAPI springOpenAPI() {
// 訪問路徑:http://localhost:9090/swagger-ui/index.html
return new OpenAPI().info(new Info()
.title("SpringDoc API")
.description("SpringDoc Simple Application")
.version("0.0.1"));
}
}Swagger 注解遷移
Swagger2 和 Swagger3 使用的是完全不同的兩套注解,所以原本使用 Swagger2 相關(guān)注解的代碼頁需要完全遷移,改為使用 Swagger3 的注解。
| Swagger2 | Swagger3 |
|---|---|
| @Api | @Tag |
| @ApiOperation | @Operation |
| @ApiImplicitParams | @Parameters |
| @ApiImplicitParam | @Parameter |
| @ApiModel | @Schema |
| @ApiModelProperty | @Schema |
| @ApiResponses | @ApiResponses |
| @ApiResponse | @ApiResponse |
| @ApiIgnore | @Hidden 或者 其他注解的 hidden = true 屬性 |
舉例五種常用
@Api
Swagger2 代碼
@Api(value = "用戶接口", tags = "UserController")
Swagger3 代碼
@Tag(name = "UserController", description = "用戶接口")
@ApiOperation
Swagger2 代碼
@ApiOperation(value = "查詢用戶數(shù)據(jù)")
Swagger3 代碼
@Operation(description = "查詢用戶數(shù)據(jù)")
@ApiImplicitParam
Swagger2 代碼
@ApiImplicitParams({
@ApiImplicitParam(name = "currentPage", value = "當(dāng)前頁碼", dataTypeClass = Integer.class, required = true),
@ApiImplicitParam(name = "size", value = "當(dāng)前頁大小", defaultValue = "10", dataTypeClass = Integer.class),
@ApiImplicitParam(name = "queryUser", value = "用戶查詢條件", dataTypeClass = User.class)
})Swagger3 代碼
@Parameters({
@Parameter(name = "currentPage", description = "當(dāng)前頁碼", required = true),
@Parameter(name = "size", description = "當(dāng)前頁大小", example = "10"),
@Parameter(name = "queryUser", description = "用戶查詢條件")
})@ApiModel
Swagger2 代碼
@ApiModel(value = "用戶信息實(shí)體類")
Swagger3 代碼
@Schema(name = "用戶信息實(shí)體類")
@ApiModelProperty
Swagger2 代碼
@ApiModelProperty(value = "用戶名稱")
Swagger3 代碼
@Schema(name = "用戶名稱")
使用示例
package com.sumo.ipd.controller;
import com.sumo.ipd.annotation.BusLog;
import com.sumo.ipd.entity.Department;
import com.sumo.ipd.entity.User;
import com.sumo.ipd.enums.Sex;
import com.sumo.ipd.enums.UserStatus;
import com.sumo.ipd.service.DepartmentService;
import com.sumo.ipd.service.UserService;
import com.sumo.ipd.utils.ExcelUtil;
import com.sumo.ipd.utils.PwdUtil;
import com.sumo.ipd.vo.LoginToken;
import com.sumo.ipd.vo.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
@RestController
@RequestMapping("user")
@CrossOrigin
@Tag(name = "UserController", description = "用戶接口")
public class UserController {
@Resource
UserService userService;
@Resource
DepartmentService departmentService;
/**
* 用戶注冊(cè)
*
* @param registerUser
* @return
*/
@Operation(description = "用戶注冊(cè)")
@PostMapping("register")
public R register(@RequestBody User registerUser) {
if (userService
.query()
.eq(User.COL_CERTIFICATENO, registerUser.getCertificateNo())
.count() > 0) {
return R.builder().code(0).message("用戶已存在!").build();
} else {
userService.save(registerUser);
return R.builder().code(200).message("注冊(cè)成功!請(qǐng)等待組織管理員審核...").build();
}
}
}到此這篇關(guān)于SpringBoot3使用Swagger3的文章就介紹到這了,更多相關(guān)SpringBoot3使用Swagger3內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA的Dubbo如何實(shí)現(xiàn)各種限流算法
Dubbo是一種高性能的Java RPC框架,廣泛應(yīng)用于分布式服務(wù)架構(gòu)中,在Dubbo中實(shí)現(xiàn)限流可以幫助服務(wù)在高并發(fā)場(chǎng)景下保持穩(wěn)定性和可靠性,常見的限流算法包括固定窗口算法、滑動(dòng)窗口算法、令牌桶算法和漏桶算法,在Dubbo中集成限流器可以通過實(shí)現(xiàn)自定義過濾器來實(shí)現(xiàn)2025-01-01
SpringMVC?@RequestMapping注解屬性詳細(xì)介紹
通過@RequestMapping注解可以定義不同的處理器映射規(guī)則,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@RequestMapping注解用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
基于SpringAI+Qdrant+Ollama本地模型和向量數(shù)據(jù)庫開發(fā)問答和RAG檢索(完整代碼)
文章介紹了使用Ollama和Qdrant構(gòu)建AI對(duì)話系統(tǒng)的步驟,包括安裝模型、啟動(dòng)向量數(shù)據(jù)庫、環(huán)境配置等,并提供了完整的代碼實(shí)現(xiàn),支持基本對(duì)話、文件檢索等功能,本文通過實(shí)例代碼給大家講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2026-04-04
Java枚舉通過Code獲取相應(yīng)的Value值實(shí)現(xiàn)方式
本文介紹了枚舉定義、如何通過code獲取value的方法,并提供了一個(gè)完整的代碼示例,通過實(shí)際測(cè)試,證明了該方法的有效性,希望本文能夠?yàn)樽x者提供參考,并鼓勵(lì)大家支持腳本之家2026-03-03
SpringBoot項(xiàng)目部署到阿里云服務(wù)器的實(shí)現(xiàn)步驟
本文主要介紹了SpringBoot項(xiàng)目部署到阿里云服務(wù)器的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06

