一種插件式開發(fā)方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種插件式開發(fā)方法和裝置。
【背景技術(shù)】
[0002] 目前開發(fā)J2EE程序一般都習(xí)慣使用SPRING框架,且SPRING框架支持XML配置文 件來(lái)進(jìn)行配置對(duì)象的注冊(cè)、AOP(AspectOrientedProgramming,面向切面編程)的實(shí)現(xiàn)、 MVC(ModelViewController,模型一視圖一控制器)的實(shí)現(xiàn)。其中,配置文件是指開啟應(yīng) 用程序時(shí),應(yīng)用程序需要讀取并加載的配置信息的集合,該配置文件通常為開發(fā)人員使用 XML(ExtensibleMarkupLanguage,可擴(kuò)展標(biāo)記語(yǔ)言)配置文件對(duì)配置數(shù)據(jù)進(jìn)行編程后得 到的文件。目前在各種應(yīng)用平臺(tái)中的應(yīng)用程序,應(yīng)用程序不可避免的要處理各種各樣的配 置信息。
[0003] 現(xiàn)有技術(shù)中,一般根據(jù)不同的應(yīng)用平臺(tái)將配置信息寫入到應(yīng)用程序中,在應(yīng)用程 序運(yùn)行的同時(shí)加載配置信息以實(shí)現(xiàn)相關(guān)配置。當(dāng)前系統(tǒng)通過(guò)XML配置文件來(lái)實(shí)現(xiàn)應(yīng)用程序 的相關(guān)配置。
[0004] 由于應(yīng)用程序?qū)崿F(xiàn)不同功能時(shí)需要不同的配置文件,應(yīng)用程序運(yùn)行時(shí)其對(duì)配置文 件進(jìn)行的是實(shí)時(shí)性操作,因此,應(yīng)用程序運(yùn)行時(shí)配置文件與應(yīng)用程序的狀態(tài)是相關(guān)的,當(dāng)應(yīng) 用程序需要生成新的需求時(shí),就需要開發(fā)人員手工的修改配置文件進(jìn)行集成,在Java軟件 開發(fā)過(guò)程中,開發(fā)人員每次修改配置文件后需要重新編譯,并封裝為應(yīng)用程序,然后重新啟 動(dòng)應(yīng)用程序,才能看到修改后的最終執(zhí)行效果;某些應(yīng)用程序的配置文件重新編譯后,重新 啟動(dòng)需要較長(zhǎng)時(shí)間,故導(dǎo)致開發(fā)人員需要花費(fèi)額外的精力來(lái)配置這些文件,人工介入的越 多同樣帶來(lái)的錯(cuò)誤也就越多,例如,若在應(yīng)用程序運(yùn)行時(shí)配置文件被人為刪除或更改則會(huì) 對(duì)應(yīng)用程序的運(yùn)行帶來(lái)風(fēng)險(xiǎn),尤其是對(duì)配置文件頻繁刪除或更改后,可能會(huì)使得應(yīng)用程序 無(wú)法正常。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的實(shí)施例提供一種插件式開發(fā)方法和裝置,用以提高應(yīng)用程序配置信息的 靈活性及方便性。
[0006] 為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007] 第一方面,本發(fā)明實(shí)施例提供一種插件式開發(fā)方法,包括:
[0008] 接收啟動(dòng)第一應(yīng)用程序的指令;
[0009] 根據(jù)所述指令啟動(dòng)所述第一應(yīng)用程序,并從配置模型中獲取運(yùn)行所述第一應(yīng)用程 序需要的配置信息,所述配置模型中包含預(yù)先配置的配置信息;
[0010] 從所述第一應(yīng)用程序的JAR包隊(duì)列中獲取實(shí)現(xiàn)第一config接口的加載實(shí)現(xiàn)類;
[0011] 在所述第一config接口運(yùn)行所述第一config接口對(duì)應(yīng)的加載實(shí)現(xiàn)類,生成所述 加載實(shí)現(xiàn)類的配置對(duì)象;
[0012] 將所述配置對(duì)象加載到所述運(yùn)行所述第一應(yīng)用程序需要的配置信息中,運(yùn)行所述 第一應(yīng)用程序,并將所述加載配置對(duì)象后的配置信息更新至所述配置模型中。
[0013] 結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述方法還包括配置模 型的生成過(guò)程,所述配置模型的生成過(guò)程包括:
[0014] 提取至少一個(gè)開發(fā)框架不同配置文件中的配置信息;
[0015] 將所述加載實(shí)現(xiàn)類除所述SPRING框架之外的配置信息,修改為符合SPRING框架 的預(yù)設(shè)規(guī)范格式的配置信息將所述配置信息加載到所述SPRING容器中。
[0016] 結(jié)合第一方面,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述從所述第一應(yīng)用程 序的JAR包隊(duì)列中獲取實(shí)現(xiàn)第一config接口的加載實(shí)現(xiàn)類包括:
[0017] 確定至少兩個(gè)線程;通過(guò)所述至少兩個(gè)線程并行依次的從所述第一應(yīng)用程序的 JAR包隊(duì)列中,讀取JAR包;獲取實(shí)現(xiàn)第一config接口的加載實(shí)現(xiàn)類。
[0018] 結(jié)合第一方面,在第一方面的第三種可能的實(shí)現(xiàn)方式中,在所述第一config接口 運(yùn)行所述第一config接口對(duì)應(yīng)的加載實(shí)現(xiàn)類,生成所述加載實(shí)現(xiàn)類的配置對(duì)象之后,所述 方法還包括:
[0019] 生成所述第一config接口、所述第一config接口的加載實(shí)現(xiàn)類以及所述配置對(duì) 象之間的對(duì)應(yīng)關(guān)系;
[0020] 將所述對(duì)應(yīng)關(guān)系添加至所述配置模型的調(diào)用索引中,所述調(diào)用索引包括至少一個(gè) 對(duì)應(yīng)關(guān)系,每個(gè)對(duì)應(yīng)關(guān)系分別包含config接口、與所述config接口對(duì)應(yīng)的加載實(shí)現(xiàn)類以及 配置對(duì)象。
[0021] 結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式 中,所述方法還包括:
[0022] 根據(jù)所述第一config接口查詢所述調(diào)用索引,獲得所述第一config接口對(duì)應(yīng)的 所述配置對(duì)象;
[0023] 通過(guò)配置調(diào)用API接口調(diào)用所述加載實(shí)現(xiàn)類的配置對(duì)象。
[0024] 結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式 中,所述方法還包括:
[0025] 通過(guò)配置同步API接口接收用戶輸入的所述配置對(duì)象的更新值;
[0026] 根據(jù)所述配置對(duì)象的更新值重新加載所述第一應(yīng)用程序,并更新所述第一config 接口對(duì)應(yīng)的所述配置對(duì)象。
[0027] 第二方面,本發(fā)明實(shí)施例還提供一種插件式開發(fā)裝置,包括:
[0028] 接收單元,用于接收啟動(dòng)第一應(yīng)用程序的指令;
[0029] 讀取單元,用于根據(jù)所述指令啟動(dòng)所述第一應(yīng)用程序,并從配置模型中獲取運(yùn)行 所述第一應(yīng)用程序需要的配置信息,所述配置模型中包含預(yù)先配置的配置信息;
[0030] 獲取單元,用于從所述第一應(yīng)用程序的JAR包隊(duì)列中獲取實(shí)現(xiàn)第一config接口的 加載實(shí)現(xiàn)類;
[0031] 生成單元,用于在所述第一config接口運(yùn)行所述第一config接口對(duì)應(yīng)的加載實(shí) 現(xiàn)類,生成所述加載實(shí)現(xiàn)類的配置對(duì)象;
[0032] 加載單元,用于將所述配置對(duì)象加載到所述運(yùn)行所述第一應(yīng)用程序需要的配置信 息中,運(yùn)行所述第一應(yīng)用程序,并將所述加載配置對(duì)象后的配置信息更新至所述配置模型 中。
[0033] 結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括轉(zhuǎn)換單 元,所述轉(zhuǎn)換單元具體用于:
[0034] 提取至少一個(gè)開發(fā)框架不同配置文件中的配置信息;
[0035] 將所述加載實(shí)現(xiàn)類除所述SPRING框架之外的配置信息,修改為符合SPRING框架 的預(yù)設(shè)規(guī)范格式的配置信息將所述配置信息加載到所述SPRING容器中。
[0036] 結(jié)合第二方面,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述獲取單元具體用 于:
[0037] 確定至少兩個(gè)線程;通過(guò)所述至少兩個(gè)線程并行依次的從所述第一應(yīng)用程序的 JAR包隊(duì)列中,讀取JAR包;獲取實(shí)現(xiàn)第一config接口的加載實(shí)現(xiàn)類。
[0038] 結(jié)合第二方面,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括存儲(chǔ)單 元,所述存儲(chǔ)單元具體用于:
[0039] 生成所述第一config接口、所述第一config接口的加載實(shí)現(xiàn)類以及所述配置對(duì) 象之間的對(duì)應(yīng)關(guān)系;
[0040] 將所述對(duì)應(yīng)關(guān)系添加至所述配置模型的調(diào)用索引中,所述調(diào)用索引包括至少一個(gè) 對(duì)應(yīng)關(guān)系,每個(gè)對(duì)應(yīng)關(guān)系分別包含config接口、與所述config接口對(duì)應(yīng)的加載實(shí)現(xiàn)類以及 配置對(duì)象。
[0041] 結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式 中,所述裝置還包括配置調(diào)用單元,所述配置調(diào)用單元具體用于:
[0042] 根據(jù)所述第一config接口查詢所述調(diào)用索引,獲得所述第一config接口對(duì)應(yīng)的 所述配置對(duì)象;
[0043] 通過(guò)配置調(diào)用API接口調(diào)用所述加載實(shí)現(xiàn)類的配置對(duì)象。
[0044] 結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式 中,所述裝置還包括配置同步單元,所述配置同步單元具體用于:
[0045] 通過(guò)配置同步API接口接收用戶輸入的所述配置對(duì)象的更新值;
[0046] 根據(jù)所述配置對(duì)象的更新值重新加載所述第一應(yīng)用程序,并更新所述第一config 接口對(duì)應(yīng)的所述配置對(duì)象。
[0047] 本發(fā)明實(shí)施例提供一種插件式開發(fā)方法,用于將原來(lái)需要在配置文件中體現(xiàn)的配 置信息,通過(guò)第一config接口運(yùn)行第一config接口對(duì)應(yīng)的加載實(shí)現(xiàn)類后,生成所述加載 實(shí)現(xiàn)類的配置對(duì)象;并將所述配置對(duì)象加載到所述運(yùn)行所述第一應(yīng)用程序需要的配置信息 中,使得第一應(yīng)用程序可以直接和配置對(duì)象進(jìn)行數(shù)據(jù)交互,使得應(yīng)用開發(fā)人員可以直接通 過(guò)查看或操作配置