一種策略加載與注入的方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種策略加載與注入的方法及裝置,該方法包括:接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;調(diào)用所述策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。本發(fā)明所提供的策略加載與注入的方法及裝置,能夠根據(jù)需要啟動對應(yīng)模塊,并在運(yùn)行時通過策略加載運(yùn)行,從而支持不同客戶的個性化業(yè)務(wù)需求。本申請能夠真正統(tǒng)一產(chǎn)品版本,原子化各種業(yè)務(wù)實(shí)現(xiàn)模式。
【專利說明】
一種策略加載與注入的方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及web程序個性化技術(shù)領(lǐng)域,特別是涉及一種策略加載與注入的方法及
目.ο
【背景技術(shù)】
[0002]隨著科學(xué)技術(shù)的發(fā)展,web程序個性化需求越來越多,且差異性也越來越大,web程序產(chǎn)品化帶來的個性配置或版本繁多,程序邏輯復(fù)雜、維護(hù)困難,項(xiàng)目化的開發(fā)和維護(hù)帶來較大的人力開銷。
[0003]Maven提供war、assembly等一系列動態(tài)發(fā)布的插件,在產(chǎn)品模塊化開發(fā)的基礎(chǔ)上,可根據(jù)不同的需要實(shí)現(xiàn)不同的模塊拼裝發(fā)布。OSGi可以動態(tài)地安裝、卸載、啟動和停止應(yīng)用程序中的不同模塊;對于應(yīng)用程序中的某一特定模塊,容器可以同時運(yùn)行該模塊的多個版本。
[0004]Maven動態(tài)發(fā)布可以滿足個性化需求的獨(dú)立發(fā)包,但導(dǎo)致產(chǎn)品發(fā)布版本過多。OSGi需要開發(fā)遵循新的規(guī)范,學(xué)習(xí)成本較高,且必須運(yùn)行在新的容器中。因此,以上兩種方案都只能做到模塊層次的劃分,而對于更細(xì)層次的運(yùn)行,加載策略無法支持。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種策略加載與注入的方法及裝置,目的在于解決web程序產(chǎn)品化帶來的個性配置或版本繁多,程序邏輯復(fù)雜,維護(hù)困難,人力成本較高的問題。
[0006]為解決上述技術(shù)問題,本發(fā)明提供一種策略加載與注入的方法,包括:
[0007]接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;
[0008]對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;
[0009]調(diào)用所述策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;
[0010]從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。
[0011]可選地,所述策略注入工廠為按照不同模塊以及適配器層級定義規(guī)則定義的尋址算法,滿足所述預(yù)設(shè)條件的適配器優(yōu)先被注入。
[0012]可選地,所述從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入包括:
[0013]將距離被注入service最近路徑的適配器進(jìn)行初始化與注入。
[0014]可選地,所述從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入包括:
[0015]按照優(yōu)先級順序?qū)?yōu)先級最高的適配器進(jìn)行初始化與注入。
[0016]可選地,所述對程序進(jìn)行加載包括:
[0017]通過spring的Iazyload對程序進(jìn)行懶加載。
[0018]本發(fā)明還提供了一種策略加載與注入的裝置,包括:
[0019]指令接收模塊,用于接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;
[0020]程序加載模塊,用于對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;[0021 ]尋址排序模塊,用于調(diào)用所述策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;
[0022]注入模塊,用于從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。
[0023]可選地,所述策略注入工廠為按照不同模塊以及適配器層級定義規(guī)則定義的尋址算法,滿足所述預(yù)設(shè)條件的適配器優(yōu)先被注入。
[0024]可選地,所述注入模塊具體用于:
[0025]將距離被注入service最近路徑的適配器進(jìn)行初始化與注入。
[0026]可選地,所述注入模塊具體用于:
[0027]按照優(yōu)先級順序?qū)?yōu)選級最高的適配器進(jìn)行初始化與注入。
[0028]可選地,所述程序加載模塊具體用于:
[0029]通過spring的Iazyload對程序進(jìn)行懶加載。
[0030]本發(fā)明所提供的策略加載與注入的方法及裝置,通過接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;調(diào)用策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。本發(fā)明所提供的策略加載與注入的方法及裝置,能夠根據(jù)需要啟動對應(yīng)模塊,并在運(yùn)行時通過策略加載運(yùn)行,從而支持不同客戶的個性化業(yè)務(wù)需求。本申請能夠真正統(tǒng)一產(chǎn)品版本,原子化各種業(yè)務(wù)實(shí)現(xiàn)模式。
【附圖說明】
[0031]為了更清楚的說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0032]圖1為本發(fā)明所提供的策略加載與注入的方法的一種【具體實(shí)施方式】的流程圖;
[0033]圖2為本發(fā)明所提供的策略加載與注入的方法的另一種【具體實(shí)施方式】的流程圖;
[0034]圖3本為發(fā)明所提供的模塊設(shè)計示意圖;
[0035]圖4為本發(fā)明實(shí)施例提供的策略加載與注入的裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0036]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明作進(jìn)一步的詳細(xì)說明。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0037]本發(fā)明所提供的策略加載與注入的方法的一種【具體實(shí)施方式】的流程圖如圖1所示,該方法包括:
[0038]步驟SlOl:接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;
[0039]步驟S102:對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;
[0040]步驟S103:調(diào)用所述策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;
[0041]步驟S104:從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。
[0042]本發(fā)明所提供的策略加載與注入的方法及裝置,通過接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;調(diào)用策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。本發(fā)明所提供的策略加載與注入的方法及裝置,能夠根據(jù)需要啟動對應(yīng)模塊,并在運(yùn)行時通過策略加載運(yùn)行,從而支持不同客戶的個性化業(yè)務(wù)需求。本申請能夠真正統(tǒng)一產(chǎn)品版本,原子化各種業(yè)務(wù)實(shí)現(xiàn)模式。本申請為客戶自行擴(kuò)展提供空間,客戶可以根據(jù)自己的特殊需要對產(chǎn)品進(jìn)行一定的增量擴(kuò)展。
[0043]需要指出的是,本發(fā)明所提供的策略加載與注入的方法中,策略注入工廠為按照不同模塊以及適配器層級定義規(guī)則定義的尋址算法,滿足所述預(yù)設(shè)條件的適配器優(yōu)先被注入。
[0044]具體地,本實(shí)施例中可以采用就近注入策略,按照公司模塊及適配器層級定義規(guī)則定義尋址算法,距離被注入service最近路徑的適配器實(shí)現(xiàn)優(yōu)先被注入。
[0045]本發(fā)明所提供的策略加載與注入的方法的另一種【具體實(shí)施方式】的流程圖如圖2所示,該方法包括:
[0046]步驟S201:接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;
[0047]步驟S202:對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;
[0048]步驟S203:調(diào)用所述策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;
[0049]步驟S204:將距離被注入service最近路徑的適配器進(jìn)行初始化與注入。
[0050]本實(shí)施例中實(shí)現(xiàn)的注入策略為就近注入,當(dāng)然,本發(fā)明還為其他注入策略的實(shí)現(xiàn)提供了預(yù)留擴(kuò)展,可以根據(jù)實(shí)際需要實(shí)現(xiàn)其他規(guī)則的注入策略。如可按照優(yōu)先級順序?qū)?yōu)先級最高的適配器進(jìn)行初始化與注入。
[0051]在上述任一實(shí)施例的基礎(chǔ)上,本發(fā)明所提供的策略加載與注入的方法中,對程序進(jìn)行加載的過程可以具體為:
[0052]通過spring的Iazyload對程序進(jìn)行懶加載。當(dāng)然,也可以采用直接加載的方式,這均不影響本發(fā)明的實(shí)現(xiàn)。
[0053]下面對本發(fā)明所提供的策略加載與注入的方法的具體實(shí)施過程進(jìn)行進(jìn)一步詳細(xì)闡述。
[0054]如圖3本發(fā)明所提供的模塊設(shè)計示意圖所示,模塊設(shè)計人員按照業(yè)務(wù)功能需要,定義響應(yīng)的業(yè)務(wù)模塊功能及柜臺適配接口。開發(fā)人員根據(jù)不同的柜臺廠商編寫不同的適配器實(shí)現(xiàn)類,且在實(shí)現(xiàn)過程中各個實(shí)現(xiàn)完全獨(dú)立,完全不需關(guān)心柜臺廠商的合作、競爭關(guān)系。
[0055]在功能實(shí)現(xiàn)時,開發(fā)人員直接使用spring原聲注解OAutowired進(jìn)行接口注入。
[0056]本實(shí)施例中,策略注入工廠采用就近注入策略,即按照公司模塊及適配器層級定義規(guī)則定義尋址算法,距離被注入service最近路徑的適配器實(shí)現(xiàn)優(yōu)先被注入。
[0057]其中,適配器范圍通過assembly進(jìn)行配置,只有包含在assembly配置中的適配器模塊才會進(jìn)行就近策略注入排序。
[0058]在實(shí)現(xiàn)過程中,程序通過spring的Iazyload進(jìn)行懶加載,在web容器啟動時,按需加載適配器配置文件并載入適配器上下文,初始化響應(yīng)的策略工廠。
[0059]當(dāng)程序首次訪問時,根據(jù)Mutowired注入需要,調(diào)用注入策略工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序,并將最近距離的適配器進(jìn)行初始化和注入,完成功能服務(wù)。
[0060]下面對本發(fā)明實(shí)施例提供的策略加載與注入的裝置進(jìn)行介紹,下文描述的策略加載與注入的裝置與上文描述的策略加載與注入的方法可相互對應(yīng)參照。
[0061]圖4為本發(fā)明實(shí)施例提供的策略加載與注入的裝置的結(jié)構(gòu)框圖,參照圖4策略加載與注入的裝置可以包括:
[0062]指令接收模塊100,用于接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;
[0063]程序加載模塊200,用于對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;
[0064]尋址排序模塊300,用于調(diào)用所述策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;
[0065]注入模塊400,用于從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。
[0066]其中,上述策略注入工廠為按照不同模塊以及適配器層級定義規(guī)則定義的尋址算法,滿足所述預(yù)設(shè)條件的適配器優(yōu)先被注入。
[0067]作為一種【具體實(shí)施方式】,本發(fā)明所提供的策略加載與注入的裝置中注入模塊可以具體用于:
[0068]將距離被注入service最近路徑的適配器進(jìn)行初始化與注入。
[0069]作為一種【具體實(shí)施方式】,本發(fā)明所提供的策略加載與注入的裝置中注入模塊具體用于:
[0070]按照優(yōu)先級順序?qū)?yōu)選級最高的適配器進(jìn)行初始化與注入。
[0071]上述任一實(shí)施例的基礎(chǔ)上,本發(fā)明所提供的策略加載與注入的裝置中程序加載模塊可具體用于:
[0072]通過spring的Iazyload對程序進(jìn)行懶加載。
[0073]本發(fā)明所提供的策略加載與注入的方法及裝置,通過接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文;對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠;調(diào)用策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序;從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。
[0074]本發(fā)明所提供的策略加載與注入的方法及裝置,在面向服務(wù)的web產(chǎn)品中,通過策略注入的方式實(shí)現(xiàn)web產(chǎn)品統(tǒng)一版本;并且通過擴(kuò)展優(yōu)先覆蓋的策略支持產(chǎn)品的自定義擴(kuò)展。
[0075]與現(xiàn)有技術(shù)相比,本申請具有如下技術(shù)優(yōu)點(diǎn):
[0076](I)在現(xiàn)有springmvc框架上擴(kuò)展,不帶來新的學(xué)習(xí)成本,對運(yùn)行容器無依賴;
[0077](2)真正統(tǒng)一版本,所有客戶發(fā)布相同的程序包,降低維護(hù)和管理成本;
[0078](3)大幅減少差異化需求帶來的配置參數(shù),降低了運(yùn)維管理成本;
[0079](4)加載注入策略可根據(jù)需要進(jìn)行不同擴(kuò)展,適用各種運(yùn)行時情況。
[0080]本說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處,各個實(shí)施例之間相同或相似部分互相參見即可。對于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
[0081]專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
[0082]結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲器(RAM)、內(nèi)存、只讀存儲器(R0M)、電可編程R0M、電可擦除可編程R0M、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
[0083]以上對本發(fā)明所提供的策略加載與注入的方法以及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種策略加載與注入的方法,其特征在于,包括: 接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文; 對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠; 調(diào)用所述策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序; 從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。2.如權(quán)利要求1所述的策略加載與注入的方法,其特征在于,所述策略注入工廠為按照不同模塊以及適配器層級定義規(guī)則定義的尋址算法,滿足所述預(yù)設(shè)條件的適配器優(yōu)先被注入。3.如權(quán)利要求2所述的策略加載與注入的方法,其特征在于,所述從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入包括: 將距離被注入service最近路徑的適配器進(jìn)行初始化與注入。4.如權(quán)利要求2所述的策略加載與注入的方法,其特征在于,所述從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入包括: 按照優(yōu)先級順序?qū)?yōu)先級最高的適配器進(jìn)行初始化與注入。5.如權(quán)利要求1至4任一項(xiàng)所述的策略加載與注入的方法,其特征在于,所述對程序進(jìn)行加載包括: 通過spring的Iazyload對程序進(jìn)行懶加載。6.一種策略加載與注入的裝置,其特征在于,包括: 指令接收模塊,用于接收web容器啟動的指令,按需加載適配器配置文件并載入適配器上下文; 程序加載模塊,用于對程序進(jìn)行加載,并初始化響應(yīng)的策略注入工廠; 尋址排序模塊,用于調(diào)用所述策略注入工廠對配置范圍內(nèi)的適配器實(shí)現(xiàn)類進(jìn)行尋址排序; 注入模塊,用于從適配器中選擇滿足預(yù)設(shè)條件的適配器進(jìn)行初始化與注入。7.如權(quán)利要求6所述的策略加載與注入的裝置,其特征在于,所述策略注入工廠為按照不同模塊以及適配器層級定義規(guī)則定義的尋址算法,滿足所述預(yù)設(shè)條件的適配器優(yōu)先被注入。8.如權(quán)利要求7所述的策略加載與注入的裝置,其特征在于,所述注入模塊具體用于: 將距離被注入service最近路徑的適配器進(jìn)行初始化與注入。9.如權(quán)利要求7所述的策略加載與注入的裝置,其特征在于,所述注入模塊具體用于: 按照優(yōu)先級順序?qū)?yōu)選級最高的適配器進(jìn)行初始化與注入。10.如權(quán)利要求6至9任一項(xiàng)所述的策略加載與注入的裝置,其特征在于,所述程序加載模塊具體用于: 通過spring的Iazyload對程序進(jìn)行懶加載。
【文檔編號】G06F9/445GK106095508SQ201610439123
【公開日】2016年11月9日
【申請日】2016年6月17日
【發(fā)明人】孔德勇, 鄒舟
【申請人】杭州財人匯網(wǎng)絡(luò)股份有限公司