Spring?Boot?整合?Smart-Doc的詳細(xì)過(guò)程(零注解生成?API?文檔,告別?Swagger)
?? 前言
隨著微服務(wù)架構(gòu)的普及,API 接口文檔的重要性日益凸顯。傳統(tǒng)的 Swagger(如 SpringFox、SpringDoc)雖然功能強(qiáng)大,但需要大量的注解來(lái)描述接口信息,增加了代碼冗余和維護(hù)成本。今天介紹的開源工具——Smart-Doc,它基于 Java 注釋和 Javadoc 規(guī)范自動(dòng)生成統(tǒng)一、規(guī)范的 API 文檔,無(wú)需任何額外注解,真正做到了“寫好注釋 = 寫好文檔”。
本文將詳細(xì)介紹如何在 Spring Boot 項(xiàng)目中整合 Smart-Doc,以及使用 Maven 插件一鍵生成多種格式的 API 文檔。
?? 一、什么是 Smart-Doc?
Smart-Doc 是一款通過(guò)解析 Java 源碼注釋來(lái)自動(dòng)生成 API 文檔的開源工具,具有以下特點(diǎn):
- 零注解:不依賴任何第三方注解,僅需寫好 Java 注釋即可。
- 多格式支持:支持 HTML、Markdown、OpenAPI、Postman JSON 等。
- 支持 Spring Boot:完美兼容 Spring MVC、Spring WebFlux。
- 構(gòu)建時(shí)生成:對(duì)運(yùn)行時(shí)性能無(wú)影響。
?? 二、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í)行編譯時(shí)啟動(dòng)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 返回用戶對(duì)象
*/
@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 對(duì)象:
/**
* 用戶實(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ù)訪問(wèn)地址,
"serverUrl": "http://127.0.0.1:8090",
//指定文檔的輸出路徑,生成到項(xiàng)目靜態(tài)文件目錄下,隨項(xiàng)目啟動(dòng)可以查看,
"outPath": "src/main/resources/static/doc/api",
//是否開啟嚴(yán)格模式,
"isStrict": false,
//是否將文檔合并到一個(gè)文件中,
"allInOne": true,
//是否創(chuàng)建可以測(cè)試的html頁(yè)面,
"createDebugPage": true,
//controller包過(guò)濾(換成你的路徑),
"packageFilters": "com.example.smartdoc.controller",
//基于highlight.js的代碼高設(shè)置,
"style": "xt256",
//配置自己的項(xiàng)目名稱,
"projectName": "smart-doc文檔",
//是否顯示接口作者名稱,
"showAuthor": false,
//自定義設(shè)置輸出文檔名稱,
"allInOneDocFileName": "index.html",
//文檔變更記錄,非必須,
"revisionLogs": [
{
//文檔版本號(hào),
"version": "1.0",
//文檔修訂時(shí)間,
"revisionTime": "2020-12-31 10:30",
//變更操作狀態(tài),一般為:創(chuàng)建、更新等,
"status": "update",
//文檔變更作者,
"author": "peng_zj",
//變更描述,
"remarks": "修改了XXXX功能"
}
]
}Step 4:運(yùn)行插件生成文檔
在maven插件中選擇想要的類型生成對(duì)應(yīng)的文檔:

生成的文檔默認(rèn)位于 target/smart-doc/html/index.html。打開瀏覽器訪問(wèn)該文件,即可看到結(jié)構(gòu)清晰、內(nèi)容豐富的 API 文檔頁(yè)面。
Step 5:效果展示

?? 三、常見問(wèn)題排查指南
| 問(wèn)題 | 解決方案 |
|---|---|
| 文檔未生成 | 檢查 Maven 插件是否正確配置,執(zhí)行命令是否正確 |
| 接口未掃描到 | 檢查 packageFilters 是否包含對(duì)應(yīng)包路徑 |
| 字段缺失 | 檢查是否有注釋或字段是否被忽略 |
| 輸出格式不滿足需求 | 修改配置文件或自定義模板 |
?? 四、結(jié)語(yǔ)
Smart-Doc 憑借其“零注解 + 強(qiáng)大解析能力”的特性,成為替代傳統(tǒng) Swagger 的理想選擇。相比 Swagger,它更加簡(jiǎn)潔、高效,特別適合那些追求代碼整潔、希望減少注解污染的項(xiàng)目。
無(wú)論是企業(yè)內(nèi)部系統(tǒng)、SaaS 平臺(tái),還是微服務(wù)架構(gòu),都可以借助 Smart-Doc 實(shí)現(xiàn)高質(zhì)量的 API 文檔自動(dòng)化生成與管理。
到此這篇關(guān)于Spring Boot 整合 Smart-Doc:零注解生成 API 文檔,告別 Swagger的文章就介紹到這了,更多相關(guān)Spring Boot Smart-Doc API 文檔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Java代碼實(shí)現(xiàn)支付充值的通用流程
本文給大家分享一段java核心代碼實(shí)現(xiàn)支付充值的通用流程,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-05-05
Java多線程編程實(shí)現(xiàn)socket通信示例代碼
這篇文章主要介紹了Java多線程編程實(shí)現(xiàn)socket通信示例代碼,詳細(xì)介紹了tcp、udp協(xié)議,以及基于socket的Java網(wǎng)絡(luò)編程的相關(guān)內(nèi)容及代碼示例,代碼測(cè)試可用,供大家參考。2017-10-10
Java實(shí)現(xiàn)優(yōu)雅的參數(shù)校驗(yàn)方法詳解
這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言如何實(shí)現(xiàn)優(yōu)雅的參數(shù)校驗(yàn),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定是幫助,需要的可以參考一下2022-06-06
Java中的CGLIB動(dòng)態(tài)代理的使用及原理詳解
這篇文章主要介紹了Java中的CGLIB動(dòng)態(tài)代理的使用及原理詳解,CGLIB是一個(gè)功能強(qiáng)大,高性能的代碼生成包,它為沒(méi)有實(shí)現(xiàn)接口的類提供代理,為JDK的動(dòng)態(tài)代理提供了很好的補(bǔ)充,需要的朋友可以參考下2023-09-09
mybatis一級(jí)緩存和二級(jí)緩存的區(qū)別及說(shuō)明
這篇文章主要介紹了mybatis一級(jí)緩存和二級(jí)緩存的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Idea中springboot項(xiàng)目的熱部署無(wú)法生效問(wèn)題解決
本文主要介紹了Idea中springboot項(xiàng)目的熱部署無(wú)法生效問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
SpringMVC整合websocket實(shí)現(xiàn)消息推送及觸發(fā)功能
這篇文章主要為大家詳細(xì)介紹了SpringMVC整合websocket實(shí)現(xiàn)消息推送及觸發(fā)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
SpringBoot整合SpringDataRedis的示例代碼
這篇文章主要介紹了SpringBoot整合SpringDataRedis的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05

