面向Java應用的方法呼叫鏈分析外掛
新人熟悉專案必備工具!基於Java位元組碼開發的一款方法呼叫鏈分析外掛,優點是程式碼侵入低,啟用方便,非同步非阻塞,完美嵌入Spring專案!再也不用擔心搞不懂專案。體驗網址: http://116.85.23.6:8521/projecttree
Spring Project Tree
很多新人進入一家新公司後,最頭疼的就是如何快速瞭解公司的業務和專案架構。
因為文件很少,沒有文件,或者是文件嚴重落伍, 根本沒法看;如果你碰到一個特別熱心的老員工,事無鉅細地給你講,隨時在你身邊答疑解惑, 那簡直是天大的好運氣, 現實是大家都很忙,沒人給你講解。
很快就要深入專案做開發了,怎麼辦呢?
我在加入新公司後,就遇到了悲催的情況。在那時,我就誕生了做一款視覺化方法呼叫鏈分析外掛的想法!幫助更多像我一樣的新人!
下載使用
專案暫時沒有加入Maven中央倉庫,所以還需要你clone或download到本地。
在本地計算機進入專案的pom.xml檔案所在目錄,開啟命令列(CMD),執行install命令安裝到本地。
mvn install
以後使用時,只需要匯入依賴
<dependency> <groupId>cn.yueshutong</groupId> <artifactId>spring-project-tree</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
1.1 Spring Boot安裝外掛
如果你的專案是Spring Boot,那麼使用會非常簡單,只需要兩步!
第一步:
在SpingBootApplication啟動類註解 @EnableProjectTree
開啟。
第二步:
在main函式裡首先執行 ProjectTree.make()
方法,這個方法的傳入的引數有兩個,第一個是要進行方法監控的類,書寫類似import,也就是說,要麼是一個類的全限定名,要麼是 * 萬用字元結尾的形式,完整程式碼如下:
@SpringBootApplication @EnableProjectTree //第一步:注入Spring Bean public class SpringbootApplication { public static void main(String[] args) { ProjectTree.make(new String[]{"com.example.springboot.demo.*"} ,new String[]{"com.example.springboot.demo.entity.MyEntity"});//第二步:引數1是要進行方法監控的類,參照import形式,引數2是要排除監控的類 SpringApplication.run(SpringbootApplication.class, args); } }
注:引數2的作用是排除如Entity類等易出錯且無意義的類。
1.2 Spring安裝外掛
Spring和Spring Boot安裝上的不同只有第一步的註解了,在Spring專案中,可以在Xml配置檔案增加對 cn.yueshutong.springprojecttree
包的自動掃描即可。
1.3 訪問網頁
啟動你的專案,首先訪問你專案的某個介面,使其執行被監控的方法。然後訪問 localhost:8080/projecttree
檢視網頁。
其它介面
介面 | 說明 |
---|---|
/json/projecttree | JSON形式的返回結果 |
/json/projecttree/{methodId} | 對某一方法的分析結果 |
注意事項
1.使用Shiro、Spring Securit等安全框架時,需要注意對此URL的許可權控制。
2.如果同時使用 spring-boot-devtools 進行熱部署,必須呼叫makeHaveDevtool方法,而不是make。
3.出現Bug一般是一些特殊類與本框架的衝突,排除這部分類即可。
優勢
使用上通過註解開啟+方法呼叫的形式,程式碼侵入性低。
使用單例執行緒池實現非同步非阻塞模型,降低對主流程的效能影響。
基於記憶體的內嵌資料庫實現資料的快速讀寫,這裡不用擔心資料過大問題,本外掛基於 方法呼叫鏈分析 進行選擇性儲存,理論上說,從介面開始,有多少流程分支,就有多少條資料記錄,佔用記憶體極小。
如何實現方法呼叫分析?
基於棧資料結構設計演算法。