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

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,并通過(guò)不同注解來(lái)生成清晰的接口文檔,需要的可以參考一下

前言

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,并通過(guò)不同注解來(lái)生成清晰的接口文檔。同時(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. 添加依賴(lài)

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 開(kāi)始,官方全面轉(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)建配置類(lèi)或直接在主啟動(dòng)類(lèi)上添加注解啟用 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();
    }
}

三、常用注解說(shuō)明

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

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

示例:

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

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

注解描述Spring Boot 版本
@ApiOperation(value = "獲取用戶(hù)列表", notes = "返回所有用戶(hù)信息")描述方法用途2.x
@Operation(summary = "獲取用戶(hù)列表", description = "返回所有用戶(hù)信息")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 = "獲取用戶(hù)列表", notes = "返回所有用戶(hù)信息")
@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 = "獲取用戶(hù)列表", description = "返回所有用戶(hù)信息")
@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í)體類(lèi)接收參數(shù)時(shí),可以對(duì)字段進(jìn)行描述。

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

示例:

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

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

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

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

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

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

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

1. Spring Boot 3.x 下無(wú)法訪問(wèn)/doc.html

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

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

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

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

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

六、總結(jié)

功能Spring Boot 2.xSpring Boot 3.x
依賴(lài)包knife4j-spring-boot-starterknife4j-openapi3-jakarta-spring-boot-starter
核心注解@Api、@ApiOperation、@ApiImplicitParam、@ApiModelProperty@Tag、@Operation、@Parameter、@Schema
訪問(wèn)地址/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)文章

  • c語(yǔ)言來(lái)實(shí)現(xiàn)貪心算法之裝箱問(wèn)題

    c語(yǔ)言來(lái)實(shí)現(xiàn)貪心算法之裝箱問(wèn)題

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

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

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

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

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

    SpringBoot整合Redis之編寫(xiě)RedisConfig

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

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

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

    解決idea中debug工具欄消失后如何顯示的問(wèn)題

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

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

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

    Java中IO流解析及代碼實(shí)例詳解

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

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

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

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

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

最新評(píng)論

衡山县| 中超| 阳曲县| 交城县| 宝坻区| 五原县| 台南县| 罗平县| 洛扎县| 和政县| 汉中市| 霍城县| 英吉沙县| 湖南省| 潼关县| 东城区| 垫江县| 镇雄县| 绵阳市| 沈阳市| 石嘴山市| 日土县| 佛教| 玉门市| 奉新县| 永嘉县| 建水县| 新密市| 北宁市| 思南县| 高清| 广昌县| 五台县| 诏安县| 札达县| 成安县| 烟台市| 田东县| 宝应县| 温宿县| 吉木萨尔县|