欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot中使用Knife4j生成接口文檔的示例詳解

 更新時(shí)間:2025年06月30日 09:18:52   作者:超級(jí)小忍  
Knife4j 是一個(gè)基于 Swagger 的增強(qiáng) UI 實(shí)現(xiàn),主要用于為 Spring Boot 應(yīng)用程序生成 API 接口文檔,本文將詳細(xì)介紹如何在 Spring Boot 中集成 Knife4j,并通過不同注解來生成清晰的接口文檔,需要的可以參考一下

前言

Knife4j 是一個(gè)基于 Swagger 的增強(qiáng) UI 實(shí)現(xiàn),主要用于為 Spring Boot 應(yīng)用程序生成 API 接口文檔。它不僅支持標(biāo)準(zhǔn)的 OpenAPI 規(guī)范,還提供了更加友好的界面和強(qiáng)大的功能。本文將詳細(xì)介紹如何在 Spring Boot 中集成 Knife4j,并通過不同注解來生成清晰的接口文檔。同時(shí),我們也會(huì)比較 Spring Boot 2.x 和 Spring Boot 3.x 版本中使用 Knife4j 的差異。

一、Knife4j 簡(jiǎn)介

Knife4j 是 Swagger 的增強(qiáng)工具包,其核心特性包括:

  • 支持 OpenAPI 2.0 / 3.0
  • 提供更美觀的 UI 界面
  • 支持接口調(diào)試
  • 支持分組管理
  • 支持離線文檔導(dǎo)出(HTML/PDF)

二、Spring Boot 集成 Knife4j

1. 添加依賴

Spring Boot 2.x(基于 Swagger 2)

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.9</version>
</dependency>

Spring Boot 3.x(基于 Swagger 3/OpenAPI 3.0)

從 Spring Boot 3.x 開始,官方全面轉(zhuǎn)向 Jakarta EE 9+,包名由 javax 變更為 jakarta,因此需要使用適配 Jakarta 的版本。

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.5.0</version>
</dependency>

注意:Spring Boot 3.x 使用的是 OpenAPI 3.0,而不再是 Swagger 2。

2. 啟用 Knife4j

創(chuàng)建配置類或直接在主啟動(dòng)類上添加注解啟用 Knife4j。

Spring Boot 2.x

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
@EnableKnife4j
public class SwaggerConfig {
}

Spring Boot 3.x

import com.github.xiaoymin.knife4j.core.constants.Knife4jOpenApi3UrlConstant;
import com.github.xiaoymin.knife4j.openap3.configuration.OpenApi3Configuration;
import com.github.xiaoymin.knife4j.spring.boot.extension.OpenApi3ExtensionResolver;
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 SwaggerConfig {

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("Spring Boot 3.x Knife4j 示例")
                        .version("1.0")
                        .description("基于 OpenAPI 3.0 的接口文檔"));
    }

    // 必須加上這個(gè) Bean 才能啟用 Knife4j 的擴(kuò)展功能
    @Bean
    public OpenApi3ExtensionResolver openApi3ExtensionResolver() {
        return new OpenApi3ExtensionResolver();
    }
}

三、常用注解說明

1. 控制器級(jí)別注解

注解描述Spring Boot 版本
@Api(tags = "用戶管理")用于類上,表示該控制器對(duì)應(yīng)的功能模塊名稱2.x & 3.x
@RequestMapping("/user")定義請(qǐng)求路徑通用

示例:

@RestController
@RequestMapping("/user")
@Api(tags = "用戶管理")
public class UserController {
}

2. 方法級(jí)別注解

注解描述Spring Boot 版本
@ApiOperation(value = "獲取用戶列表", notes = "返回所有用戶信息")描述方法用途2.x
@Operation(summary = "獲取用戶列表", description = "返回所有用戶信息")OpenAPI 3.0 替代方案3.x
@ApiImplicitParams({@ApiImplicitParam(name = "pageNum", value = "頁(yè)碼", required = true, dataType = "int")})描述參數(shù)(適用于非實(shí)體對(duì)象參數(shù))2.x
@Parameters({@Parameter(name = "pageNum", description = "頁(yè)碼", required = true)})OpenAPI 3.0 替代方案3.x

示例:

Spring Boot 2.x

@GetMapping("/list")
@ApiOperation(value = "獲取用戶列表", notes = "返回所有用戶信息")
@ApiImplicitParams({
    @ApiImplicitParam(name = "pageNum", value = "頁(yè)碼", required = true, dataType = "int"),
    @ApiImplicitParam(name = "pageSize", value = "每頁(yè)數(shù)量", required = false, dataType = "int")
})
public List<User> listUsers(int pageNum, int pageSize) {
    return userService.list(pageNum, pageSize);
}

Spring Boot 3.x

@GetMapping("/list")
@Operation(summary = "獲取用戶列表", description = "返回所有用戶信息")
@Parameters({
    @Parameter(name = "pageNum", description = "頁(yè)碼", required = true),
    @Parameter(name = "pageSize", description = "每頁(yè)數(shù)量", required = false)
})
public List<User> listUsers(int pageNum, int pageSize) {
    return userService.list(pageNum, pageSize);
}

3. 參數(shù)對(duì)象字段注解

當(dāng)使用實(shí)體類接收參數(shù)時(shí),可以對(duì)字段進(jìn)行描述。

注解描述Spring Boot 版本
@ApiModelProperty(value = "用戶名", example = "admin")描述字段含義及示例值2.x
@Schema(description = "用戶名", example = "admin")OpenAPI 3.0 替代方案3.x

示例:

public class UserDTO {
    @Schema(description = "用戶名", example = "admin")
    private String username;

    @Schema(description = "密碼", example = "123456")
    private String password;
}

四、訪問 Knife4j 文檔頁(yè)面

啟動(dòng)項(xiàng)目后,訪問以下地址查看接口文檔:

Spring Boot 2.x:http://localhost:8080/knife4j-ui.html

Spring Boot 3.x:http://localhost:8080/doc.html

五、常見問題與注意事項(xiàng)

1. Spring Boot 3.x 下無法訪問/doc.html

請(qǐng)確保你使用了正確的 Starter 包(帶 openapi3-jakarta 字樣),并且正確配置了 OpenAPI Bean。

2. 參數(shù)沒有顯示注釋

確保你在實(shí)體類字段上使用了 @Schema@ApiModelProperty 注解,并且開啟了相應(yīng)的自動(dòng)掃描。

3. 多個(gè)接口分組展示

可以通過 Docket(Spring Boot 2.x)或 OpenAPI + 分組配置(Spring Boot 3.x)實(shí)現(xiàn)多組接口文檔。

六、總結(jié)

功能Spring Boot 2.xSpring Boot 3.x
依賴包knife4j-spring-boot-starterknife4j-openapi3-jakarta-spring-boot-starter
核心注解@Api、@ApiOperation、@ApiImplicitParam、@ApiModelProperty@Tag、@Operation、@Parameter、@Schema
訪問地址/knife4j-ui.html/doc.html
默認(rèn)協(xié)議Swagger 2.0OpenAPI 3.0

以上就是SpringBoot中使用Knife4j生成接口文檔的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Knife4j生成接口文檔的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • IntelliJ IDEA 2020.1.2激活工具下載及破解方法免費(fèi)可用至2089年(強(qiáng)烈推薦)

    IntelliJ IDEA 2020.1.2激活工具下載及破解方法免費(fèi)可用至2089年(強(qiáng)烈推薦)

    這篇文章主要介紹了IntelliJ IDEA 2020.1.2激活工具下載及破解方法免費(fèi)可用至2089年(強(qiáng)烈推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java操作數(shù)據(jù)庫(kù)(行級(jí)鎖,for update)

    Java操作數(shù)據(jù)庫(kù)(行級(jí)鎖,for update)

    這篇文章主要介紹了Java操作數(shù)據(jù)庫(kù)(行級(jí)鎖,for update),文章圍繞Java操作數(shù)據(jù)庫(kù)的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2021-12-12
  • J2EE中的struts2表單細(xì)節(jié)處理

    J2EE中的struts2表單細(xì)節(jié)處理

    這篇文章主要介紹了J2EE中的struts2表單細(xì)節(jié)處理的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 如何使用cmd命令行窗口運(yùn)行java文件

    如何使用cmd命令行窗口運(yùn)行java文件

    多年以來一直使用的是IDE來寫java項(xiàng)目,導(dǎo)致很多的最基礎(chǔ)的東西都漸漸模糊了,最近遇到一個(gè)問題就是如果命令行來運(yùn)行一個(gè)java項(xiàng)目,這里總結(jié)下,這篇文章主要給大家介紹了關(guān)于如何使用cmd命令行窗口運(yùn)行java文件的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • 淺談java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制

    淺談java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Lombok 的@StandardException注解解析

    Lombok 的@StandardException注解解析

    @StandardException 是一個(gè)實(shí)驗(yàn)性的注解,添加到 Project Lombok 的 v__1.18.22 版本中,在本教程中,我們將使用 Lombok 的 @StandardException 注解自動(dòng)生成異常類型類的構(gòu)造函數(shù),需要的朋友可以參考下
    2023-05-05
  • java之swing表格實(shí)現(xiàn)方法

    java之swing表格實(shí)現(xiàn)方法

    這篇文章主要介紹了java之swing表格實(shí)現(xiàn)方法,以實(shí)例形式分析了swing構(gòu)建表格的方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • 一文搞懂JAVA 修飾符

    一文搞懂JAVA 修飾符

    這篇文章主要介紹了JAVA 修飾符的的相關(guān)資料,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Spring Boot中如何使用Convert接口實(shí)現(xiàn)類型轉(zhuǎn)換器

    Spring Boot中如何使用Convert接口實(shí)現(xiàn)類型轉(zhuǎn)換器

    這篇文章主要介紹了Spring Boot中使用Convert接口實(shí)現(xiàn)類型轉(zhuǎn)換器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java el簡(jiǎn)介及用法

    java el簡(jiǎn)介及用法

    EL簡(jiǎn)介語(yǔ)法結(jié)構(gòu) 運(yùn)算符等資料代碼。
    2009-04-04

最新評(píng)論