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

SpringBoot項(xiàng)目集成Smart-Doc的實(shí)戰(zhàn)指南

 更新時(shí)間:2025年10月24日 08:49:28   作者:Micro麥可樂(lè)  
Smart-Doc是一款強(qiáng)大的基于Java的API文檔生成工具,它通過(guò)對(duì)接口源代碼進(jìn)行分析來(lái)生成全面而準(zhǔn)確的文檔,完全不需要對(duì)代碼進(jìn)行任何注入,下面我們看看如何在SpringBoot項(xiàng)目中集成Smart-Doc吧

為什么我放棄了SpringDoc OpenAPI

在我們開(kāi)發(fā) Spring Boot 項(xiàng)目中,相信很多小伙伴最初都是選擇 SpringDoc OpenAPI (Swagger3) 來(lái)生成接口文檔。博主之前也寫(xiě)了一篇整合SpringDoc OpenAPI的文章,感興趣的可以查閱 SpringBoot3整合SpringDoc OpenAPI生成接口文檔的詳細(xì)過(guò)程

SpringDoc OpenAPI 它可以通過(guò)注解自動(dòng)生成交互式文檔(Swagger UI),你是不是覺(jué)的也挺方便挺好的,實(shí)際上當(dāng)項(xiàng)目規(guī)模逐漸增大、功能需求不斷更新后,你就會(huì)慢慢發(fā)現(xiàn)以下這類(lèi)問(wèn)題:

1、代碼侵入性強(qiáng)

需要大量 @Schema@Operation、@ApiResponse 等注解來(lái)完善文檔,增加代碼耦合和維護(hù)負(fù)擔(dān)!

常見(jiàn)的注解示例如下:

當(dāng)業(yè)務(wù)功能有所調(diào)整,我們也需要一并對(duì)注解進(jìn)行修改

import com.toher.springdoc.bean.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import org.springframework.web.bind.annotation.*;

/**
 * @Author 麥可樂(lè)
 * @Date 2025/10/20 11:17 AM
 * @Version 1.0
 */

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Operation(summary = "獲取用戶信息接口", description = "通過(guò)用戶ID獲取用戶信息")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "用戶信息",
                    content = {@Content(mediaType = "application/json",
                    schema = @Schema(implementation = User.class))}),
            @ApiResponse(responseCode = "404", description = "無(wú)法獲取用戶信息")
    })
    @GetMapping("/{id}")
    public User getUserById(@Parameter(description = "用戶ID") @PathVariable Long id) {
        //模擬數(shù)據(jù)庫(kù)獲取用戶
        User user = new User();
        user.setId(1L);
        user.setName("張三");
        user.setEmail("zhansan@qq.com");
        return user;
    }
}

2、運(yùn)行依賴問(wèn)題

目前大多數(shù)企業(yè)都是前后端協(xié)同開(kāi)發(fā)的,而SpringDoc OpenAPI 生成接口文檔依賴項(xiàng)目運(yùn)行環(huán)境(即需要 Spring 啟動(dòng)),意味著文檔無(wú)法離線生成,CI/CD 集成麻煩。

3、多模塊支持問(wèn)題

很多時(shí)候我們的項(xiàng)目都是基于多模塊的,如一個(gè) SpringBoot 項(xiàng)目中包含了前端API模塊和后端API模塊,那么我們分別就需要啟動(dòng)前端API服務(wù)和后端API服務(wù),SpringDoc 很難整合多個(gè)模塊接口,需要手動(dòng)聚合

Smart-Doc 的出現(xiàn):讓接口文檔真正無(wú)侵入

直到博主發(fā)現(xiàn)了Smart-Doc,它最大的特點(diǎn)是——無(wú)需啟動(dòng)項(xiàng)目、無(wú)需注解,通過(guò)靜態(tài)源碼分析生成接口文檔,官方文檔地址:https://smart-doc-group.github.io/zh/

Smart-Doc核心特點(diǎn)

  • 零侵入:完全基于注釋信息生成文檔,實(shí)現(xiàn)代碼零侵入
  • 接口多樣性:支持為Java RESTful API、Java WebSocket、Apache Dubbo RPC和gRPC接口生成文檔
  • 框架多樣性:支持 Spring Boot、JAX-RS、Solon等多種框架
  • 文檔豐富:支持生成 HTML、Asciidoc、Markdown、OpenAPI、Swagger、Postman、Word 等多種格式的文檔
  • 支持拓展:支持用戶使用 Java SPI 對(duì)支持框架進(jìn)行擴(kuò)展
  • 文檔協(xié)作管理:Smart-Doc 和 Torna 結(jié)合形成行業(yè)領(lǐng)先的文檔解決方案

SpringBoot快速整合smart-doc

為了讓大家迅速掌握smart-doc,我們先從最簡(jiǎn)單的單模塊 Spring Boot 項(xiàng)目開(kāi)始

項(xiàng)目結(jié)構(gòu)示例

小伙伴們自行構(gòu)建SpringBoot項(xiàng)目,博主的項(xiàng)目結(jié)構(gòu)如下:

添加 Maven 插件

在 pom.xml 中加入 Smart-Doc 插件配置

<?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.5.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.toher</groupId>
    <artifactId>smart-doc-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>smart-doc-demo</name>
    <description>smart-doc-demo</description>

    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>com.ly.smart-doc</groupId>
                <artifactId>smart-doc-maven-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <configFile>./src/main/resources/smart-doc.json</configFile>
                    <projectName>${project.description}</projectName>
                </configuration>
                <executions>
                    <execution>
                        <!--如果不需要在執(zhí)行編譯時(shí)啟動(dòng)smart-doc,則將phase注釋掉-->
                        <phase>compile</phase>
                        <goals>
                            <!--smart-doc提供了html、openapi、markdown等goal,可按需配置-->
                            <goal>html</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

添加Smart-Doc配置文件

本文主要給大家演示如何快速接入Smart-Doc,更多配置文件項(xiàng)說(shuō)明請(qǐng)參考官方文檔 https://smart-doc-group.github.io/zh/guide/advanced/config

在resources目錄下創(chuàng)建smart-doc.json

{
  "outPath": "src/main/resources/static/doc",
  "projectName": "SmartDoc Demo",
  "allInOne": true,
  "serverUrl": "http://localhost:8080",
  "packageFilters": "com.toher.smartdocdemo.controller",
  "sourceCodePaths": [
    {
      "path": "src/main/java",
      "desc": "Main Source"
    }
  ]
}

編寫(xiě)實(shí)體類(lèi)User

/**
 * 用戶實(shí)體類(lèi)
 *
 * @Author: micro麥可樂(lè)
 * @Date: 2025/10/20 18:59
 *
 **/
@Data
@AllArgsConstructor
public class User {
    /**
     * 用戶ID主鍵
     */
    private Long id;
    /**
     * 用戶名稱(chēng)
     */
    private String name;
}

編寫(xiě)Controller

/**
 * 用戶管理接口
 * @Author: micro麥可樂(lè)
 * @Date: 2025/10/20 18:59
 */
@RestController
@RequestMapping("/users")
public class UserController {

    /**
     * 獲取用戶列表
     * @return 返回用戶列表
     */
    @GetMapping
    public List<User> list() {
        List<User> list = new ArrayList<>();
        list.add(new User(1L, "Alice"));
        list.add(new User(2L, "Bob"));
        return list;
    }

    /**
     * 創(chuàng)建用戶
     * @param user
     * @return 返回創(chuàng)建用戶
     */
    @PostMapping
    public User create(@RequestBody User user) {
        user.setId(3L);
        return user;
    }

    /**
     * 根據(jù)ID獲取用戶信息
     * @param id 用戶ID
     * @return 返回用戶對(duì)象
     */
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return new User(id, "張三");
    }
}

運(yùn)行生成文檔

生成文檔命令

mvn smart-doc:html

通過(guò)IDEA maven生成

文檔最終生成效果

結(jié)語(yǔ)

通過(guò)本文的講解以及快速集成案例,相信小伙伴們已經(jīng)掌握了在 SpringBoot 項(xiàng)目中整合smart-doc的方法。smart-doc 的零侵入特性讓我們的代碼更加整潔,基于注釋的文檔生成方式也更符合開(kāi)發(fā)者的習(xí)慣。趕緊在項(xiàng)目中嘗試使用smart-doc,體驗(yàn)它帶來(lái)的便捷和高效吧!

以上就是SpringBoot項(xiàng)目集成Smart-Doc的實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot集成Smart-Doc的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解SpringBoot中@PostMapping注解的用法

    詳解SpringBoot中@PostMapping注解的用法

    在SpringBoot中,我們經(jīng)常需要編寫(xiě)RESTful Web服務(wù),以便于客戶端與服務(wù)器之間的通信,@PostMapping注解可以讓我們更方便地編寫(xiě)POST請(qǐng)求處理方法,在本文中,我們將介紹@PostMapping注解的作用、原理,以及如何在SpringBoot應(yīng)用程序中使用它
    2023-06-06
  • Java枚舉類(lèi)型在switch語(yǔ)句正確使用方法詳解

    Java枚舉類(lèi)型在switch語(yǔ)句正確使用方法詳解

    這篇文章主要介紹了Java枚舉類(lèi)型在switch語(yǔ)句正確使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 一文了解jJava中的加密與安全

    一文了解jJava中的加密與安全

    常見(jiàn)的編碼有ASCII碼、Unicode編碼。最簡(jiǎn)單的編碼是直接給每個(gè)字符指定一個(gè)若干字節(jié)表示的整數(shù),復(fù)雜一點(diǎn)的編碼就需要根據(jù)已有的編碼推算出來(lái)。本文將為大家詳細(xì)講講Java重點(diǎn)加密與安全,感興趣的可以了解一下
    2022-07-07
  • MyBatis框架搭建時(shí)依賴包引入異常的問(wèn)題解決

    MyBatis框架搭建時(shí)依賴包引入異常的問(wèn)題解決

    在使用IDEA環(huán)境搭建MyBatis框架時(shí),可能會(huì)因?yàn)橐蕾嚢姹具^(guò)低導(dǎo)致兼容性問(wèn)題,本文就來(lái)介紹一下MyBatis框架搭建時(shí)依賴包引入異常的問(wèn)題解決,感興趣的可以來(lái)了解一下
    2024-10-10
  • MyBatis如何實(shí)現(xiàn)多表查詢(多對(duì)一、一對(duì)多)

    MyBatis如何實(shí)現(xiàn)多表查詢(多對(duì)一、一對(duì)多)

    這篇文章主要給大家介紹了關(guān)于MyBatis如何實(shí)現(xiàn)多表查詢(多對(duì)一、一對(duì)多)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • springboot默認(rèn)掃描的路徑方式

    springboot默認(rèn)掃描的路徑方式

    這篇文章主要介紹了springboot默認(rèn)掃描的路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java使用DualPivotQuicksort排序

    Java使用DualPivotQuicksort排序

    這篇文章主要介紹了Java使用DualPivotQuicksort排序,喜歡算法的同學(xué)一定要看一下
    2021-04-04
  • Java 并發(fā)編程ArrayBlockingQueue的實(shí)現(xiàn)

    Java 并發(fā)編程ArrayBlockingQueue的實(shí)現(xiàn)

    這篇文章主要介紹了Java 并發(fā)編程ArrayBlockingQueue的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Mybatis查詢語(yǔ)句結(jié)果集的總結(jié)大全

    Mybatis查詢語(yǔ)句結(jié)果集的總結(jié)大全

    這篇文章主要給大家總結(jié)介紹了關(guān)于Mybatis查詢語(yǔ)句結(jié)果集的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • SpringBoot中cache使用的實(shí)現(xiàn)示例

    SpringBoot中cache使用的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot中cache使用的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-10-10

最新評(píng)論

大化| 平原县| 三都| 天门市| 瑞金市| 江华| 英德市| 广平县| 榆树市| 丁青县| 惠安县| 兰溪市| 岢岚县| 通山县| 张家界市| 东兴市| 保康县| 临武县| 梨树县| 永胜县| 长顺县| 恩施市| 邢台市| 沁阳市| 洛川县| 美姑县| 阜新| 临沧市| 开鲁县| 金平| 信丰县| 许昌市| 姜堰市| 高尔夫| 昌乐县| 十堰市| 皮山县| 壶关县| 巨鹿县| 天等县| 额济纳旗|