JApiDocs 動態生成接口文檔,並解析java 源碼中的註釋

最近碰到一個有趣的開源項目: JApiDocs 地址:https://gitee.com/yeguozhong/JApiDocs

1、介紹

JApiDocs 是一個符合 Java 編程習慣的 Api 文檔生成工具。最大程度地利用 Java 的語法特性,你只管用心設計好接口,添加必要的註釋,JApiDocs 會幫你導出一份漂亮的 Html 文檔,並生成相關的 Java 和 Object-C 相關數據模型代碼,從此,Android 和 IOS 的同學可以少敲很多代碼了,你也不需要費力維護接口文檔的變化,只需要維護好你的代碼就可以了。

實際使用中,你的原先代碼,可能如下:

/**
 * Get User List
 * @param listForm
 */
@RequestMapping(path = "list", method = {RequestMethod.GET,  RequestMethod.POST}  )
public ApiResult<PageResult<UserVO>> list(UserListForm listForm){
    return null;
}

此時,你的代碼不用改動 (僅僅需要引入依賴jar,和簡單的配置),不用像swagger一樣額外通過註解的形式,來給該接口添加說明,該JApiDocs會自行給該接口添加接口說明和字段說明。

換言之,該 JApiDocs 會讀取源碼,並解析。

2、疑問

那麼,問題來了,class字節碼是沒有註釋信息的,JApiDocs 又是怎麼做到的?

3、解答

查閱readme,並 clone 出項目後,得到解釋如下:

  1. 接口對象在源碼中 我們知道,經過編譯後的 class 字節碼中是沒有註釋信息的,如果要通過反射字節碼的方式來實現,則不可避免要引入運行時註解,這樣會增加使用成本, 考慮到這一點,JApiDocs 從第二個版本之後就改成了使用解析源碼的方式,而不是反射字節碼的思路來實現了,但這樣直接導致的缺陷就是: 所有的 Form Bean (表單)對象和返回對象就必須在項目的源碼中,否則就無法解析了,如果你們項目的JavaBean對象是通過jar包的形式提供的, 那很遺憾,JApiDocs將無法支持。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章