Spring?Boot?整合?Smart-Doc的詳細(xì)過程(零注解生成?API?文檔,告別?Swagger)
?? 前言
隨著微服務(wù)架構(gòu)的普及,API 接口文檔的重要性日益凸顯。傳統(tǒng)的 Swagger(如 SpringFox、SpringDoc)雖然功能強(qiáng)大,但需要大量的注解來描述接口信息,增加了代碼冗余和維護(hù)成本。今天介紹的開源工具——Smart-Doc,它基于 Java 注釋和 Javadoc 規(guī)范自動生成統(tǒng)一、規(guī)范的 API 文檔,無需任何額外注解,真正做到了“寫好注釋 = 寫好文檔”。
本文將詳細(xì)介紹如何在 Spring Boot 項(xiàng)目中整合 Smart-Doc,以及使用 Maven 插件一鍵生成多種格式的 API 文檔。
?? 一、什么是 Smart-Doc?
Smart-Doc 是一款通過解析 Java 源碼注釋來自動生成 API 文檔的開源工具,具有以下特點(diǎn):
- 零注解:不依賴任何第三方注解,僅需寫好 Java 注釋即可。
- 多格式支持:支持 HTML、Markdown、OpenAPI、Postman JSON 等。
- 支持 Spring Boot:完美兼容 Spring MVC、Spring WebFlux。
- 構(gòu)建時生成:對運(yùn)行時性能無影響。
?? 二、Spring Boot 整合 Smart-Doc 步驟詳解
Step 1:添加 Maven 插件
首先,在你的 pom.xml
文件中添加 Smart-Doc 的 Maven 插件配置:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--api文檔 begin--> <plugin> <groupId>com.github.shalousun</groupId> <artifactId>smart-doc-maven-plugin</artifactId> <version>2.3.5</version> <configuration> <!--指定生成文檔的使用的配置文件--> <configFile>${basedir}/src/main/resources/smart-doc.json</configFile> </configuration> <executions> <execution> <!--如果不需要在執(zhí)行編譯時啟動smart-doc,則將phase注釋掉--> <phase>compile</phase> <goals> <goal>html</goal> </goals> </execution> </executions> </plugin> <!--api文檔 end--> </plugins> </build>
Step 2:編寫符合規(guī)范的 Java 注釋
Smart-Doc 依賴于標(biāo)準(zhǔn)的 Java 注釋生成文檔。確保為你的 Controller 和 DTO 類編寫詳細(xì)的注釋。
示例 Controller:
/** * 用戶控制器 * @Author: pzj * @Date: 2025/6/12 18:59 **/ @RestController @RequestMapping("/users") public class UserController { /** * 獲取用戶詳情 * @param id 用戶ID * @return 返回用戶對象 */ @GetMapping("/{id}") public User getUserById(@PathVariable Long id) { return new User(id, "張三"); } /** * 創(chuàng)建新用戶 * @param user 用戶實(shí)體 * @return 創(chuàng)建結(jié)果 */ @PostMapping("/add") public String createUser(@RequestBody User user) { System.out.println(user); return "創(chuàng)建成功"; } }
示例 DTO 對象:
/** * 用戶實(shí)體類 * * @Author: pzj * @Date: 2025/6/12 19:00 * **/ public class User implements Serializable { /** * 主鍵 */ private Long id; /** * 用戶名 */ private String userName; public User(Long id, String userName) { this.id = id; this.userName = userName; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }
Step 3:添加配置文件 (src/main/resources/smart-doc-config.json)
{ //指定后端服務(wù)訪問地址, "serverUrl": "http://127.0.0.1:8090", //指定文檔的輸出路徑,生成到項(xiàng)目靜態(tài)文件目錄下,隨項(xiàng)目啟動可以查看, "outPath": "src/main/resources/static/doc/api", //是否開啟嚴(yán)格模式, "isStrict": false, //是否將文檔合并到一個文件中, "allInOne": true, //是否創(chuàng)建可以測試的html頁面, "createDebugPage": true, //controller包過濾(換成你的路徑), "packageFilters": "com.example.smartdoc.controller", //基于highlight.js的代碼高設(shè)置, "style": "xt256", //配置自己的項(xiàng)目名稱, "projectName": "smart-doc文檔", //是否顯示接口作者名稱, "showAuthor": false, //自定義設(shè)置輸出文檔名稱, "allInOneDocFileName": "index.html", //文檔變更記錄,非必須, "revisionLogs": [ { //文檔版本號, "version": "1.0", //文檔修訂時間, "revisionTime": "2020-12-31 10:30", //變更操作狀態(tài),一般為:創(chuàng)建、更新等, "status": "update", //文檔變更作者, "author": "peng_zj", //變更描述, "remarks": "修改了XXXX功能" } ] }
Step 4:運(yùn)行插件生成文檔
在maven插件中選擇想要的類型生成對應(yīng)的文檔:
生成的文檔默認(rèn)位于 target/smart-doc/html/index.html
。打開瀏覽器訪問該文件,即可看到結(jié)構(gòu)清晰、內(nèi)容豐富的 API 文檔頁面。
Step 5:效果展示
?? 三、常見問題排查指南
問題 | 解決方案 |
---|---|
文檔未生成 | 檢查 Maven 插件是否正確配置,執(zhí)行命令是否正確 |
接口未掃描到 | 檢查 packageFilters 是否包含對應(yīng)包路徑 |
字段缺失 | 檢查是否有注釋或字段是否被忽略 |
輸出格式不滿足需求 | 修改配置文件或自定義模板 |
?? 四、結(jié)語
Smart-Doc 憑借其“零注解 + 強(qiáng)大解析能力”的特性,成為替代傳統(tǒng) Swagger 的理想選擇。相比 Swagger,它更加簡潔、高效,特別適合那些追求代碼整潔、希望減少注解污染的項(xiàng)目。
無論是企業(yè)內(nèi)部系統(tǒng)、SaaS 平臺,還是微服務(wù)架構(gòu),都可以借助 Smart-Doc 實(shí)現(xiàn)高質(zhì)量的 API 文檔自動化生成與管理。
到此這篇關(guān)于Spring Boot 整合 Smart-Doc:零注解生成 API 文檔,告別 Swagger的文章就介紹到這了,更多相關(guān)Spring Boot Smart-Doc API 文檔內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Java代碼實(shí)現(xiàn)支付充值的通用流程
本文給大家分享一段java核心代碼實(shí)現(xiàn)支付充值的通用流程,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧2016-05-05Java多線程編程實(shí)現(xiàn)socket通信示例代碼
這篇文章主要介紹了Java多線程編程實(shí)現(xiàn)socket通信示例代碼,詳細(xì)介紹了tcp、udp協(xié)議,以及基于socket的Java網(wǎng)絡(luò)編程的相關(guān)內(nèi)容及代碼示例,代碼測試可用,供大家參考。2017-10-10Java實(shí)現(xiàn)優(yōu)雅的參數(shù)校驗(yàn)方法詳解
這篇文章主要為大家詳細(xì)介紹了Java語言如何實(shí)現(xiàn)優(yōu)雅的參數(shù)校驗(yàn),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定是幫助,需要的可以參考一下2022-06-06Idea中springboot項(xiàng)目的熱部署無法生效問題解決
本文主要介紹了Idea中springboot項(xiàng)目的熱部署無法生效問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10SpringMVC整合websocket實(shí)現(xiàn)消息推送及觸發(fā)功能
這篇文章主要為大家詳細(xì)介紹了SpringMVC整合websocket實(shí)現(xiàn)消息推送及觸發(fā)功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03SpringBoot整合SpringDataRedis的示例代碼
這篇文章主要介紹了SpringBoot整合SpringDataRedis的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05