本申請涉及計算機,尤其涉及一種基于java反射機制的接口掃描方法、裝置、設備以及存儲介質(zhì)。
背景技術:
1、在線上應用平臺中,通常會面臨大量多方服務api(application?programminginterface,應用程序編程接口)的集成問題,目前方法大多基于實際業(yè)務場景,根據(jù)需求人工梳理業(yè)務流程所需api并進行的集成,在面對大量api時集成效率低下,且目前存在大量業(yè)務系統(tǒng)基于java語言,通過spring?boot框架構(gòu)建。因此需要一種基于java語言的自動化批量導入api的方式優(yōu)化api集成方式。
2、上述內(nèi)容僅用于輔助理解本申請的技術方案,并不代表承認上述內(nèi)容是現(xiàn)有技術。
技術實現(xiàn)思路
1、本申請的主要目的在于提供一種基于java反射機制的接口掃描方法、裝置、設備以及存儲介質(zhì),旨在解決現(xiàn)有方法在面對大量api時集成效率低下的技術問題。
2、為實現(xiàn)上述目的,本申請?zhí)岢鲆环N基于java反射機制的接口掃描方法,所述方法包括:
3、遍歷加載指定目錄下的jar文件包中的類;
4、在對所加載的所述類中的預設類進行加載時,基于預定義類文件轉(zhuǎn)換器與字節(jié)碼操作庫,對所述預設類的方法調(diào)用進行攔截;
5、在攔截成功后,基于java反射機制獲取所述預設類中的接口信息。
6、在一實施例中,所述遍歷加載指定目錄下的jar文件包中的類的步驟,包括:
7、遍歷獲取指定目錄下的文件,并過濾得到jar文件包;
8、獲取所述jar文件包的目錄路徑,并生成所述jar文件包的統(tǒng)一資源定位符url;
9、基于所述jar文件包的url,創(chuàng)建自定義類加載器的實例;
10、通過所述自定義類加載器的實例,對所述jar文件包中的類進行加載。
11、在一實施例中,所述在對所加載的所述類中的預設類進行加載時,基于預定義類文件轉(zhuǎn)換器與字節(jié)碼操作庫,對所述預設類的方法調(diào)用進行攔截的步驟之前,還包括:
12、基于java插裝機制與所述預設類,定義若干個類文件轉(zhuǎn)換器;
13、基于java代理機制,創(chuàng)建java代理,將所述若干個類文件轉(zhuǎn)換器添加至所述java代理。
14、在一實施例中,所述在對所加載的所述類中的預設類進行加載時,基于預定義類文件轉(zhuǎn)換器與字節(jié)碼操作庫,對所述預設類的方法調(diào)用進行攔截的步驟,包括:
15、在對所加載的所述類中的預設類進行加載時,基于字節(jié)碼操作庫,將所述預設類作為待增強類;
16、基于預定義類文件轉(zhuǎn)換器與所述字節(jié)碼操作庫,通過注解對所述待增強類定義攔截邏輯;
17、基于所述攔截邏輯,實現(xiàn)對所述預設類的方法調(diào)用進行攔截。
18、在一實施例中,所述在攔截成功后,基于java反射機制獲取所述預設類中的接口信息的步驟,包括:
19、在攔截成功后,基于java反射機制,掃描獲取所述預設類的方法;
20、基于所述預設類的方法,篩選出所述預設類中的接口方法;
21、基于所述接口方法,獲取對應方法的參數(shù)類型;
22、對所述接口方法進行調(diào)用,獲取接口信息。
23、在一實施例中,所述方法還包括:
24、當所述接口方法調(diào)用成功時,將所述接口信息添加至接口注冊表中,并生成應用程序編程接口api文檔;
25、當所述接口方法調(diào)用失敗時,基于預設調(diào)用異常處理邏輯,對所述接口方法進行重新調(diào)用。
26、在一實施例中,所述方法還包括:
27、若檢測到指定目錄下任一jar文件包發(fā)生更新,則獲取更新內(nèi)容;
28、基于所述更新內(nèi)容,重新獲取所述指定目錄下的接口信息,并對api文檔進行更新。
29、此外,為實現(xiàn)上述目的,本申請還提出一種接口掃描裝置,所述接口掃描裝置包括:
30、類加載模塊,用于遍歷加載指定目錄下的jar文件包中的類;
31、攔截模塊,用于在對所加載的所述類中的預設類進行加載時,基于預定義類文件轉(zhuǎn)換器與字節(jié)碼操作庫,對所述預設類的方法調(diào)用進行攔截;
32、獲取模塊,用于在攔截成功后,基于java反射機制獲取所述預設類中的接口信息。
33、此外,為實現(xiàn)上述目的,本申請還提出一種接口掃描設備,所述設備包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述計算機程序配置為實現(xiàn)如上文所述的接口掃描方法的步驟。
34、此外,為實現(xiàn)上述目的,本申請還提出一種存儲介質(zhì),所述存儲介質(zhì)為計算機可讀存儲介質(zhì),所述存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上文所述的接口掃描方法的步驟。
35、本申請?zhí)岢龅囊粋€或多個技術方案,至少具有以下技術效果:
36、本申請實施例提出的基于java反射機制的接口掃描方法、裝置、設備以及存儲介質(zhì),具體通過遍歷加載指定目錄下的jar文件包中的類;在對所加載的所述類中的預設類進行加載時,基于預定義類文件轉(zhuǎn)換器與字節(jié)碼操作庫,對所述預設類的方法調(diào)用進行攔截;在攔截成功后,基于java反射機制獲取所述預設類中的接口信息。
37、本申請通過遍歷指定目錄下的jar文件包,對加載jar文件包中所有類進行加載,然后在對所有類中的預設類進行加載時,利用預定義的類文件轉(zhuǎn)換器與字節(jié)碼操作庫,對預設類的方法調(diào)用進行攔截,再通過java反射機制,掃描獲得預設類中的接口方法,進一步獲取接口信息,能夠在不更改源代碼的情況下,進行api參數(shù)信息熱加載,實現(xiàn)java語言自動化掃描項目工程目錄下的所有接口,自動生成api文檔,以便提高接口接入效率和api集成效率。
1.一種基于java反射機制的接口掃描方法,其特征在于,所述方法包括:
2.如權(quán)利要求1所述的方法,其特征在于,所述遍歷加載指定目錄下的jar文件包中的類的步驟,包括:
3.如權(quán)利要求1所述的方法,其特征在于,所述在對所加載的所述類中的預設類進行加載時,基于預定義類文件轉(zhuǎn)換器與字節(jié)碼操作庫,對所述預設類的方法調(diào)用進行攔截的步驟之前,還包括:
4.如權(quán)利要求3所述的方法,其特征在于,所述在對所加載的所述類中的預設類進行加載時,基于預定義類文件轉(zhuǎn)換器與字節(jié)碼操作庫,對所述預設類的方法調(diào)用進行攔截的步驟,包括:
5.如權(quán)利要求1所述的方法,其特征在于,所述在攔截成功后,基于java反射機制獲取所述預設類中的接口信息的步驟,包括:
6.如權(quán)利要求5中所述的方法,其特征在于,所述方法還包括:
7.如權(quán)利要求1至6中任一項所述的方法,其特征在于,所述方法還包括:
8.一種接口掃描裝置,其特征在于,所述接口掃描裝置包括:
9.一種接口掃描設備,其特征在于,所述設備包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述計算機程序配置為實現(xiàn)如權(quán)利要求1至7中任一項所述的接口掃描方法的步驟。
10.一種存儲介質(zhì),其特征在于,所述存儲介質(zhì)為計算機可讀存儲介質(zhì),所述存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至7中任一項所述的接口掃描方法的步驟。