最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

一、Knife4j 簡介

Knife4j 是 Swagger 的增強工具包,其核心特性包括:

  • 支持 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)建配置類或直接在主啟動類上添加注解啟用 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 的接口文檔"));
    }

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

三、常用注解說明

1. 控制器級別注解

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

示例:

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

2. 方法級別注解

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

示例:

Spring Boot 2.x

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

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

當使用實體類接收參數(shù)時,可以對字段進行描述。

注解描述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 文檔頁面

啟動項目后,訪問以下地址查看接口文檔:

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

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

五、常見問題與注意事項

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

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

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

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

3. 多個接口分組展示

可以通過 Docket(Spring Boot 2.x)或 OpenAPI + 分組配置(Spring Boot 3.x)實現(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
默認協(xié)議Swagger 2.0OpenAPI 3.0

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

相關(guān)文章

  • c語言來實現(xiàn)貪心算法之裝箱問題

    c語言來實現(xiàn)貪心算法之裝箱問題

    這篇文章主要介紹了c語言來實現(xiàn)貪心算法之裝箱問題,需要的朋友可以參考下
    2015-03-03
  • Java 15密封接口的4個實現(xiàn)約束實戰(zhàn)指南

    Java 15密封接口的4個實現(xiàn)約束實戰(zhàn)指南

    文章主要介紹了Java 15中密封接口的定義、使用、繼承約束以及在不同包和模塊中的訪問控制規(guī)則,密封接口通過限制類的繼承來提高類型安全性和封裝性,支持模式匹配和未來的switch表達式改進,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • SharedingSphere?自定義脫敏規(guī)則介紹

    SharedingSphere?自定義脫敏規(guī)則介紹

    這篇文章主要介紹了SharedingSphere?自定義脫敏規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot整合Redis之編寫RedisConfig

    SpringBoot整合Redis之編寫RedisConfig

    RedisConfig需要對redis提供的兩個Template的序列化配置,所以本文為大家詳細介紹了SpringBoot整合Redis如何編寫RedisConfig,需要的可以參考下
    2022-06-06
  • 關(guān)于springboot2.4跨域配置問題

    關(guān)于springboot2.4跨域配置問題

    這篇文章主要介紹了springboot2.4跨域配置的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • 解決idea中debug工具欄消失后如何顯示的問題

    解決idea中debug工具欄消失后如何顯示的問題

    這篇文章主要介紹了解決idea中debug工具欄消失后如何顯示的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java中JMM與volatile關(guān)鍵字的學習

    Java中JMM與volatile關(guān)鍵字的學習

    這篇文章主要介紹了通過實例解析JMM和Volatile關(guān)鍵字的學習,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09
  • Java中IO流解析及代碼實例詳解

    Java中IO流解析及代碼實例詳解

    流是一種抽象概念,它代表了數(shù)據(jù)的無結(jié)構(gòu)化傳遞。。用來進行輸入輸出操作的流就稱為IO流。換句話說,IO流就是以流的方式進行輸入輸出
    2021-08-08
  • JAVA 對象創(chuàng)建與對象克隆

    JAVA 對象創(chuàng)建與對象克隆

    這篇文章主要介紹了JAVA 對象創(chuàng)建與對象克隆,new 創(chuàng)建、反射、克隆、反序列化,克隆它分為深拷貝和淺拷貝,通過調(diào)用對象的 clone方法,進行對象的克隆,下面來看看文章的詳細內(nèi)容吧
    2022-02-02
  • Java使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方

    Java使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方

    POI-TL 是一個基于 Apache POI 的 Java 庫,專注于在 Microsoft Word 文檔(.docx 格式)中進行模板填充和動態(tài)內(nèi)容生成,下面我們看看如何使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方吧
    2025-03-03

最新評論

谢通门县| 沽源县| 吉林省| 岚皋县| 萨嘎县| 富蕴县| 池州市| 微山县| 砀山县| 苏州市| 苏尼特左旗| 山东| 门头沟区| 怀来县| 页游| 宝坻区| 达拉特旗| 阿图什市| 永仁县| 慈利县| 洛隆县| 黑水县| 临洮县| 博白县| 东明县| 长葛市| 布拖县| 池州市| 沙田区| 乌鲁木齐市| 白沙| 五原县| 水城县| 嘉善县| 安宁市| 象山县| 天柱县| 松江区| 陆川县| 耿马| 永昌县|