本申請(qǐng)涉及軟件領(lǐng)域,特別涉及一種代碼處理方法及裝置。
背景技術(shù):
在數(shù)據(jù)處理領(lǐng)域,常通過采用緩存技術(shù)(即把一些不變或變化頻次比較低的數(shù)據(jù)存儲(chǔ)在緩存空間中,業(yè)務(wù)需要獲取數(shù)據(jù)的時(shí)候,先到緩存空間獲取數(shù)據(jù),如果緩存空間中不存在,再到原始數(shù)據(jù)源中獲取數(shù)據(jù)的一種技術(shù))來提高處理性能。
目前,應(yīng)用了緩存技術(shù)的應(yīng)用程序中,對(duì)應(yīng)緩存操作的緩存代碼和對(duì)應(yīng)業(yè)務(wù)操作的業(yè)務(wù)代碼是緊密耦合的。然而對(duì)應(yīng)緩存操作的緩存代碼和對(duì)應(yīng)業(yè)務(wù)操作的業(yè)務(wù)代碼緊密耦合的方式需要開發(fā)人員在編寫業(yè)務(wù)代碼的同時(shí),還要編寫大量與業(yè)務(wù)代碼耦合的緩存代碼,增加了代碼編寫的工作量,從而降低了應(yīng)用程序的開發(fā)效率,并且開發(fā)人員在以耦合的方式編寫緩存代碼和業(yè)務(wù)代碼時(shí),由于無法避免開發(fā)人員漏寫相關(guān)緩存代碼的情況,因此會(huì)導(dǎo)致在運(yùn)行應(yīng)用程序時(shí),降低數(shù)據(jù)處理的性能。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例提供一種代碼處理方法及裝置,以達(dá)到縮短代碼編寫的時(shí)間,從而提高應(yīng)用程序的開發(fā)效率,并且在運(yùn)行應(yīng)用程序時(shí),能夠有效改善數(shù)據(jù)處理的性能的目的,技術(shù)方案如下:
一種代碼處理方法,包括:
在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件;
按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼;
對(duì)所述緩存代碼和所述業(yè)務(wù)代碼進(jìn)行融合運(yùn)行。
優(yōu)選的,所述在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件包括:
對(duì)所述業(yè)務(wù)代碼進(jìn)行編譯時(shí),讀取所述緩存配置文件;
對(duì)所述緩存代碼和所述業(yè)務(wù)代碼進(jìn)行融合運(yùn)行的過程,包括:
按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼;
對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼,并運(yùn)行所述可執(zhí)行代碼。
優(yōu)選的,在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件包括:
在調(diào)用所述業(yè)務(wù)代碼時(shí),讀取緩存配置文件;
對(duì)所述緩存代碼和所述業(yè)務(wù)代碼進(jìn)行融合運(yùn)行的過程,包括:
在運(yùn)行所述業(yè)務(wù)代碼之前,AOP管理器運(yùn)行所述緩存代碼,并運(yùn)行所述業(yè)務(wù)代碼;
或,運(yùn)行所述業(yè)務(wù)代碼,并在運(yùn)行所述業(yè)務(wù)代碼之后,所述AOP管理器運(yùn)行所述緩存代碼。
優(yōu)選的,所述讀取緩存配置文件包括:
利用Maven插件讀取所述緩存配置文件;
所述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,包括:
利用字節(jié)碼技術(shù)按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼;
所述按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,包括:
利用所述字節(jié)碼技術(shù)按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼。
優(yōu)選的,所述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,包括:
按照所述緩存配置文件中的更新對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成更新對(duì)象緩存代碼;
所述按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,包括:
按照所述緩存配置文件中的更新對(duì)象代碼注入規(guī)則,將所述更新對(duì)象緩存代碼注入更新對(duì)象業(yè)務(wù)代碼中,得到更新對(duì)象融合代碼;
所述對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼的過程,包括:
對(duì)所述更新對(duì)象融合代碼進(jìn)行編譯,得到更新對(duì)象可執(zhí)行代碼;
或,所述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,包括:
按照所述緩存配置文件中的插入對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成插入對(duì)象緩存代碼;
所述按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,包括:
按照所述緩存配置文件中的插入對(duì)象代碼注入規(guī)則,將所述插入對(duì)象緩存代碼注入插入對(duì)象業(yè)務(wù)代碼中,得到插入對(duì)象融合代碼;
所述對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼的過程,包括:
對(duì)所述插入對(duì)象融合代碼進(jìn)行編譯,得到插入對(duì)象可執(zhí)行代碼;
或,所述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,包括:
按照所述緩存配置文件中的獲取對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成獲取對(duì)象緩存代碼;
所述按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,包括:
按照所述緩存配置文件中的獲取對(duì)象代碼注入規(guī)則,將所述獲取對(duì)象緩存代碼注入獲取對(duì)象業(yè)務(wù)代碼中,得到獲取對(duì)象融合代碼;
所述對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼的過程,包括:
對(duì)所述獲取對(duì)象融合代碼進(jìn)行編譯,得到獲取對(duì)象可執(zhí)行代碼;
或,所述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,包括:
按照所述緩存配置文件中的刪除對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成刪除對(duì)象緩存代碼;
所述按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,包括:
按照所述緩存配置文件中的刪除對(duì)象代碼注入規(guī)則,將所述刪除對(duì)象緩存代碼注入刪除對(duì)象業(yè)務(wù)代碼中,得到刪除對(duì)象融合代碼;
所述對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼的過程,包括:
對(duì)所述刪除對(duì)象融合代碼進(jìn)行編譯,得到獲取對(duì)象可執(zhí)行代碼。
優(yōu)選的,所述主鍵生成規(guī)則為采用動(dòng)態(tài)模板語言對(duì)緩存對(duì)象主鍵進(jìn)行描述的語句。
一種代碼處理裝置,包括:
讀取模塊,用于在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件;
生成模塊,用于按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼;
運(yùn)行模塊,用于對(duì)所述緩存代碼和所述業(yè)務(wù)代碼進(jìn)行融合運(yùn)行。
優(yōu)選的,所述讀取模塊包括:
第一讀取單元,用于對(duì)所述業(yè)務(wù)代碼進(jìn)行編譯時(shí),讀取所述緩存配置文件;
所述運(yùn)行模塊包括:
注入單元,用于按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼;
第一編譯單元,用于對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼;
第一運(yùn)行單元,用于運(yùn)行所述可執(zhí)行代碼。
優(yōu)選的,所述讀取模塊包括:
第二讀取單元,用于在調(diào)用所述業(yè)務(wù)代碼時(shí),讀取緩存配置文件;
所述運(yùn)行模塊包括:
第二運(yùn)行單元,用于在運(yùn)行所述業(yè)務(wù)代碼之前,運(yùn)行所述緩存代碼;
或,第三運(yùn)行單元,用于在運(yùn)行所述業(yè)務(wù)代碼之后,運(yùn)行所述緩存代碼。
優(yōu)選的,所述第一讀取單元具體用于利用Maven插件讀取所述緩存配置文件;
所述生成模塊包括:
第一生成單元,用于利用字節(jié)碼技術(shù)按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼;
所述注入單元具體用于利用所述字節(jié)碼技術(shù)按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼。
優(yōu)選的,所述生成模塊包括:
第二生成單元,用于按照所述緩存配置文件中的更新對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成更新對(duì)象緩存代碼;
所述注入單元包括:
第一注入子單元,用于按照所述緩存配置文件中的更新對(duì)象代碼注入規(guī)則,將所述更新對(duì)象緩存代碼注入更新對(duì)象業(yè)務(wù)代碼中,得到更新對(duì)象融合代碼;
所述第一編譯單元包括:
第一編譯子單元,用于對(duì)所述更新對(duì)象融合代碼進(jìn)行編譯,得到更新對(duì)象可執(zhí)行代碼;
或,所述生成模塊包括:
第三生成單元,用于按照所述緩存配置文件中的插入對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成插入對(duì)象緩存代碼;
所述注入單元包括:
第二注入子單元,用于按照所述緩存配置文件中的插入對(duì)象代碼注入規(guī)則,將所述插入對(duì)象緩存代碼注入插入對(duì)象業(yè)務(wù)代碼中,得到插入對(duì)象融合代碼;
所述第一編譯單元包括:
第二編譯子單元,用于對(duì)所述插入對(duì)象融合代碼進(jìn)行編譯,得到插入對(duì)象可執(zhí)行代碼;
或,所述生成模塊包括:
第四生成單元,用于按照所述緩存配置文件中的獲取對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成獲取對(duì)象緩存代碼;
所述注入單元包括:
第三注入子單元,用于按照所述緩存配置文件中的獲取對(duì)象代碼注入規(guī)則,將所述獲取對(duì)象緩存代碼注入獲取對(duì)象業(yè)務(wù)代碼中,得到獲取對(duì)象融合代碼;
所述第一編譯單元包括:
第三編譯子單元,用于對(duì)所述獲取對(duì)象融合代碼進(jìn)行編譯,得到獲取對(duì)象可執(zhí)行代碼;
或,所述生成模塊包括:
第五生成單元,用于按照所述緩存配置文件中的刪除對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成刪除對(duì)象緩存代碼;
所述注入單元包括:
第四注入子單元,用于按照所述緩存配置文件中的刪除對(duì)象代碼注入規(guī)則,將所述刪除對(duì)象緩存代碼注入刪除對(duì)象業(yè)務(wù)代碼中,得到刪除對(duì)象融合代碼;
所述第一編譯單元包括:
第四編譯子單元,用于對(duì)所述刪除對(duì)象融合代碼進(jìn)行編譯,得到獲取對(duì)象可執(zhí)行代碼。
優(yōu)選的,所述主鍵生成規(guī)則為采用動(dòng)態(tài)模板語言對(duì)緩存對(duì)象主鍵進(jìn)行描述的語句。
與現(xiàn)有技術(shù)相比,本申請(qǐng)的有益效果為:
在本申請(qǐng)中,通過在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件,以及按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼,以及對(duì)所述緩存代碼和業(yè)務(wù)代碼進(jìn)行融合運(yùn)行,實(shí)現(xiàn)了業(yè)務(wù)代碼和緩存代碼相分離,業(yè)務(wù)代碼和緩存代碼無需耦合在一起,因此開發(fā)人員僅需要編寫業(yè)務(wù)代碼,減少了開發(fā)人員的工作量,且由于緩存代碼的編寫過程和緩存代碼與業(yè)務(wù)代碼融合運(yùn)行的過程是基于機(jī)器的,因此相比于開發(fā)人員以耦合方式編寫緩存代碼和業(yè)務(wù)代碼的方式,縮短了代碼編寫的時(shí)間,從而提高了應(yīng)用程序的開發(fā)效率。
并且,由于開發(fā)人員不再需要編寫緩存代碼,避免了因開發(fā)人員疏忽漏寫緩存代碼的情況發(fā)生,因此在運(yùn)行應(yīng)用程序時(shí),能夠有效改善數(shù)據(jù)處理的性能。
附圖說明
為了更清楚地說明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本申請(qǐng)?zhí)峁┑拇a處理方法的一種流程圖;
圖2是本申請(qǐng)?zhí)峁┑拇a處理裝置的一種邏輯結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
實(shí)施例一
請(qǐng)參見圖1,其示出了本申請(qǐng)?zhí)峁┑拇a處理方法的一種流程圖,可以包括以下步驟:
步驟S11:在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件。
在本實(shí)施例中,緩存配置文件包括緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則。其中,緩存操作執(zhí)行規(guī)則用于描述業(yè)務(wù)代碼此次要執(zhí)行的是哪種緩存操作(如更新緩存中的數(shù)據(jù)、插入數(shù)據(jù)到緩存中、刪除緩存中的數(shù)據(jù)或獲取緩存中的數(shù)據(jù));主鍵生成規(guī)則用于描述緩存對(duì)象(即需要放到緩存中的對(duì)象)的主鍵。
其中,主鍵生成規(guī)則具體為采用動(dòng)態(tài)模板語言對(duì)緩存對(duì)象主鍵進(jìn)行描述的語句。在主鍵生成規(guī)則為采用動(dòng)態(tài)模板語言對(duì)緩存對(duì)象主鍵進(jìn)行描述的語句時(shí),可以在運(yùn)行緩存代碼時(shí)動(dòng)態(tài)生成緩存對(duì)象的主鍵。
在本實(shí)施例中,緩存配置文件中的語句為XML格式。當(dāng)然,緩存配置文件中的語句也可以是注解的格式或其它格式。
步驟S12:按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼。
緩存代碼包括緩存操作執(zhí)行語句和緩存對(duì)象的主鍵。其中,緩存對(duì)象的主鍵能夠保證在進(jìn)行緩存數(shù)據(jù)處理時(shí)能夠正確的對(duì)緩存對(duì)象進(jìn)行處理。
步驟S13:對(duì)所述緩存代碼和所述業(yè)務(wù)代碼進(jìn)行融合運(yùn)行。
在本申請(qǐng)中,通過在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件,以及按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼,以及對(duì)所述緩存代碼和業(yè)務(wù)代碼進(jìn)行融合運(yùn)行,實(shí)現(xiàn)了業(yè)務(wù)代碼和緩存代碼相分離,業(yè)務(wù)代碼和緩存代碼無需耦合在一起,因此開發(fā)人員僅需要編寫業(yè)務(wù)代碼,減少了開發(fā)人員的工作量,且由于緩存代碼的編寫過程和緩存代碼與業(yè)務(wù)代碼融合運(yùn)行的過程是基于機(jī)器的,因此相比于開發(fā)人員以耦合方式編寫緩存代碼和業(yè)務(wù)代碼的方式,縮短了代碼編寫的時(shí)間,從而提高了應(yīng)用程序的開發(fā)效率。
并且,由于開發(fā)人員不再需要編寫緩存代碼,避免了因開發(fā)人員疏忽漏寫緩存代碼的情況發(fā)生,因此在運(yùn)行應(yīng)用程序時(shí),能夠有效改善數(shù)據(jù)處理的性能。
進(jìn)一步的,由于本申請(qǐng)實(shí)現(xiàn)了業(yè)務(wù)代碼和緩存代碼相分離,業(yè)務(wù)代碼和緩存代碼無需耦合在一起,因此能夠減少應(yīng)用程序開發(fā)中的編寫大量重復(fù)代碼及其相關(guān)調(diào)試,測(cè)試及后續(xù)重構(gòu)引發(fā)的工作量,以及減少因切換緩存方案導(dǎo)致對(duì)代碼進(jìn)行大量改動(dòng)與重構(gòu)的工作量,以及避免緩存數(shù)據(jù)的延遲現(xiàn)象,以及避免數(shù)據(jù)不一致可能導(dǎo)致的問題。
在本實(shí)施例中,圖1示出的代碼處理方法具體實(shí)現(xiàn)方式可以為在對(duì)業(yè)務(wù)代碼進(jìn)行編譯時(shí),實(shí)現(xiàn)緩存代碼和業(yè)務(wù)代碼的融合運(yùn)行,具體實(shí)現(xiàn)過程如下:
上述在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件的過程具體可以為:
對(duì)所述業(yè)務(wù)代碼進(jìn)行編譯時(shí),讀取所述緩存配置文件。
在本實(shí)施例中,讀取所述緩存配置文件具體可以為利用Maven插件讀取所述緩存配置文件。
相應(yīng)的,上述對(duì)所述緩存代碼和所述業(yè)務(wù)代碼進(jìn)行融合運(yùn)行的過程具體為:
步驟A11:按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼。
在本實(shí)施例中,代碼注入規(guī)則用于描述緩存代碼注入到業(yè)務(wù)代碼中的位置。
其中,按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程具體可以為:利用所述字節(jié)碼技術(shù)按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼。
步驟A12:對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼,并運(yùn)行所述可執(zhí)行代碼。
其中,在讀取所述緩存配置文件具體為利用Maven(即項(xiàng)目對(duì)象模型(POM),可以通過一小段描述信息來管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的軟件項(xiàng)目管理工具)插件讀取所述緩存配置文件時(shí),按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,具體為:利用字節(jié)碼技術(shù)按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼。
在本實(shí)施例中,上述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,具體可以為:
按照所述緩存配置文件中的更新對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成更新對(duì)象緩存代碼;
相應(yīng)的,上述按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,具體為:
按照所述緩存配置文件中的更新對(duì)象代碼注入規(guī)則,將所述更新對(duì)象緩存代碼注入更新對(duì)象業(yè)務(wù)代碼中,得到更新對(duì)象融合代碼。
相應(yīng)的,上述對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼的過程,具體為:
對(duì)所述更新對(duì)象融合代碼進(jìn)行編譯,得到更新對(duì)象可執(zhí)行代碼。
或,上述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,具體可以為:
按照所述緩存配置文件中的插入對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成插入對(duì)象緩存代碼。
相應(yīng)的,上述按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,具體為:
按照所述緩存配置文件中的插入對(duì)象代碼注入規(guī)則,將所述插入對(duì)象緩存代碼注入插入對(duì)象業(yè)務(wù)代碼中,得到插入對(duì)象融合代碼。
相應(yīng)的,上述對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼的過程,具體為:
對(duì)所述插入對(duì)象融合代碼進(jìn)行編譯,得到插入對(duì)象可執(zhí)行代碼。
或,上述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,具體為:
按照所述緩存配置文件中的獲取對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成獲取對(duì)象緩存代碼;
相應(yīng)的,上述按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,具體為:
按照所述緩存配置文件中的獲取對(duì)象代碼注入規(guī)則,將所述獲取對(duì)象緩存代碼注入獲取對(duì)象業(yè)務(wù)代碼中,得到獲取對(duì)象融合代碼。
相應(yīng)的,上述對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼的過程,包括:
對(duì)所述獲取對(duì)象融合代碼進(jìn)行編譯,得到獲取對(duì)象可執(zhí)行代碼;
或,上述按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼的過程,具體可以為:
按照所述緩存配置文件中的刪除對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成刪除對(duì)象緩存代碼。
相應(yīng)的,按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼的過程,具體可以為:
按照所述緩存配置文件中的刪除對(duì)象代碼注入規(guī)則,將所述刪除對(duì)象緩存代碼注入刪除對(duì)象業(yè)務(wù)代碼中,得到刪除對(duì)象融合代碼。
相應(yīng)的,上述對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼的過程,具體為:
對(duì)所述刪除對(duì)象融合代碼進(jìn)行編譯,得到獲取對(duì)象可執(zhí)行代碼。
在本實(shí)施例中,針對(duì)上述更新對(duì)象緩存代碼、插入對(duì)象緩存代碼、獲取對(duì)象緩存代碼和刪除對(duì)象緩存代碼對(duì)應(yīng)的緩存配置文件進(jìn)行舉例說明,示例如下:
用戶操作類為:
相應(yīng)的,緩存配置文件為:
<aop-caches implement=”org.tinygroup.aopcache.RedisCache”>//采用RedisCache實(shí)現(xiàn)
<aop-cache type="test.UserDao">//這個(gè)針對(duì)test.UserDao來定義緩沖規(guī)則
<method name="insertUser">//針對(duì)UserDao的插入方法定義緩沖規(guī)則
<cache-actions>
<put parameter-name="user"key="${user.id}"group="user"/>//把用戶放到user組下面,它的ID就是user對(duì)象的id屬性
<clear group="userlist"/>//為了保持同步,需要把原來緩沖的userlist對(duì)象清除掉,因?yàn)樗慕Y(jié)果可能已經(jīng)不正確了
</cache-actions>
<clear group="userlist"/>//為了保持同步,需要把原來緩沖的userlist對(duì)象清除掉,因?yàn)樗慕Y(jié)果可能已經(jīng)不正確了
</cache-actions>
</method></method>
<method name="updateUser">//針對(duì)UserDao的更新方法定義緩沖規(guī)則
<cache-actions>
<put parameter-name="user"key="${user.id}"group="user"/>//把用戶放到user組下面,它的ID就是user對(duì)象的id屬性
<method name="removeUser">//針對(duì)UserDao的刪除方法定義緩沖規(guī)則
<cache-actions>
<delete parameter-name="user"key="${user.id}"group="user"/>//刪除對(duì)應(yīng)的緩沖項(xiàng)
<clear group="userlist"/>//為了保持同步,需要把原來緩沖的userlist對(duì)象清除掉,因?yàn)樗慕Y(jié)果可能已經(jīng)不正確了
</cache-actions>
</method>
<method name="getUser">//針對(duì)UserDao的獲取對(duì)象方法定義緩沖規(guī)則
<cache-actions>
<put key="${userId}"group="user"/>//把用戶放到user組下面,它的ID就是userId
</cache-actions>
</method>
</aop-cache>
</aop-caches>
其中,用戶操作類即為業(yè)務(wù)代碼,根據(jù)緩存配置文件中的“<cache-actions><put parameter-name="user"key="${user.id}"group="user"/>//把用戶放到user組下面,它的ID就是user對(duì)象的id屬性”生成更新對(duì)象緩存代碼,根據(jù)緩存配置文件中的“<method name="updateUser">//針對(duì)UserDao的更新方法定義緩沖規(guī)則”,將更新對(duì)象緩存代碼注入至對(duì)應(yīng)用戶操作類中的更新用戶的代碼即public void updateUser(User user){ }中;
根據(jù)緩存配置文件中的“<put parameter-name="user"key="${user.id}"group="user"/>//把用戶放到user組下面,它的ID就是user對(duì)象的id屬性<clear group="userlist"/>//為了保持同步,需要把原來緩沖的userlist對(duì)象清除掉,因?yàn)樗慕Y(jié)果可能已經(jīng)不正確了”,生成插入對(duì)象緩存代碼,根據(jù)緩存配置文件中的“<method name="insertUser">//針對(duì)UserDao的插入方法定義緩沖規(guī)則”將插入對(duì)象緩存代碼注入至用戶操作類中的插入用戶的代碼即“public void insertUser(User user){}”中;
根據(jù)緩存配置文件中的“<put key="${userId}"group="user"/>//把用戶放到user組下面,它的ID就是userId”,生成獲取對(duì)象緩存代碼,根據(jù)緩存配置文件中的“<method name="getUser">//針對(duì)UserDao的獲取對(duì)象方法定義緩沖規(guī)則”將獲取對(duì)象緩存代碼注入至用戶操作類中的獲取用戶的代碼即“public User getUser(intuserId){}”中;
根據(jù)緩存配置文件中的“<delete parameter-name="user"key="${user.id}"group="user"/>//刪除對(duì)應(yīng)的緩沖項(xiàng)<clear group="userlist"/>//為了保持同步,需要把原來緩沖的userlist對(duì)象清除掉,因?yàn)樗慕Y(jié)果可能已經(jīng)不正確了”,生成刪除對(duì)象緩存代碼,根據(jù)緩存配置文件中的“<method name="removeUser">//針對(duì)UserDao的刪除方法定義緩沖規(guī)則”將刪除對(duì)象緩存代碼注入至用戶操作類中的刪除用戶的代碼即“public void removeUser(User user){}”中。
當(dāng)然,在本實(shí)施例中,圖1示出的代碼處理方法具體實(shí)現(xiàn)方式可以為AOP方式即在調(diào)用業(yè)務(wù)代碼時(shí),動(dòng)態(tài)讀取緩存代碼,實(shí)現(xiàn)緩存代碼和業(yè)務(wù)代碼的動(dòng)態(tài)融合運(yùn)行,具體實(shí)現(xiàn)過程如下:
上述在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件具體可以為:
在調(diào)用所述業(yè)務(wù)代碼時(shí),讀取緩存配置文件。
相應(yīng)的,上述對(duì)所述緩存代碼和所述業(yè)務(wù)代碼進(jìn)行融合運(yùn)行的過程具體可以為:
在運(yùn)行所述業(yè)務(wù)代碼之前,AOP管理器運(yùn)行所述緩存代碼,并運(yùn)行所述業(yè)務(wù)代碼;
或,運(yùn)行所述業(yè)務(wù)代碼,并在運(yùn)行所述業(yè)務(wù)代碼之后,所述AOP管理器運(yùn)行所述緩存代碼。
其中,在軟件業(yè),AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。
實(shí)施例二
與上述方法實(shí)施例相對(duì)應(yīng),本實(shí)施例提供了一種代碼處理裝置,請(qǐng)參見圖2,代碼處理裝置包括:讀取模塊21、生成模塊22和運(yùn)行模塊23。
讀取模塊21,用于在對(duì)業(yè)務(wù)代碼進(jìn)行處理時(shí),讀取緩存配置文件。
生成模塊22,用于按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼。
所述主鍵生成規(guī)則為采用動(dòng)態(tài)模板語言對(duì)緩存對(duì)象主鍵進(jìn)行描述的語句。
運(yùn)行模塊23,用于對(duì)所述緩存代碼和所述業(yè)務(wù)代碼進(jìn)行融合運(yùn)行。
在本實(shí)施例中,讀取模塊21具體可以包括:第一讀取單元,用于對(duì)所述業(yè)務(wù)代碼進(jìn)行編譯時(shí),讀取所述緩存配置文件。
相應(yīng)的,運(yùn)行模塊23具體可以包括:注入單元、第一編譯單元和第一運(yùn)行單元。
注入單元,用于按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼。
第一編譯單元,用于對(duì)所述融合代碼進(jìn)行編譯,得到可執(zhí)行代碼。
第一運(yùn)行單元,用于運(yùn)行所述可執(zhí)行代碼。
在本實(shí)施例中,第一讀取單元具體用于利用Maven插件讀取所述緩存配置文件。
相應(yīng)的,生成模塊22具體包括:第一生成單元,用于利用字節(jié)碼技術(shù)按照所述緩存配置文件中的緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成緩存代碼。
注入單元具體用于利用所述字節(jié)碼技術(shù)按照所述緩存配置文件中的代碼注入規(guī)則,將所述緩存代碼注入至所述業(yè)務(wù)代碼中,得到融合代碼。
在本實(shí)施例中,上述生成模塊22具體可以包括:第二生成單元,用于按照所述緩存配置文件中的更新對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成更新對(duì)象緩存代碼。
相應(yīng)的,上述注入單元具體包括:第一注入子單元,用于按照所述緩存配置文件中的更新對(duì)象代碼注入規(guī)則,將所述更新對(duì)象緩存代碼注入更新對(duì)象業(yè)務(wù)代碼中,得到更新對(duì)象融合代碼。
上述第一編譯單元具體包括:第一編譯子單元,用于對(duì)所述更新對(duì)象融合代碼進(jìn)行編譯,得到更新對(duì)象可執(zhí)行代碼。
或,生成模塊22具體包括:第三生成單元,用于按照所述緩存配置文件中的插入對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成插入對(duì)象緩存代碼。
相應(yīng)的,注入單元包括:第二注入子單元,用于按照所述緩存配置文件中的插入對(duì)象代碼注入規(guī)則,將所述插入對(duì)象緩存代碼注入插入對(duì)象業(yè)務(wù)代碼中,得到插入對(duì)象融合代碼。
所述第一編譯單元包括:第二編譯子單元,用于對(duì)所述插入對(duì)象融合代碼進(jìn)行編譯,得到插入對(duì)象可執(zhí)行代碼。
或,所述生成模塊22包括:第四生成單元,用于按照所述緩存配置文件中的獲取對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成獲取對(duì)象緩存代碼;
所述注入單元包括:第三注入子單元,用于按照所述緩存配置文件中的獲取對(duì)象代碼注入規(guī)則,將所述獲取對(duì)象緩存代碼注入獲取對(duì)象業(yè)務(wù)代碼中,得到獲取對(duì)象融合代碼。
所述第一編譯單元包括:第三編譯子單元,用于對(duì)所述獲取對(duì)象融合代碼進(jìn)行編譯,得到獲取對(duì)象可執(zhí)行代碼。
或,所述生成模塊22包括:第五生成單元,用于按照所述緩存配置文件中的刪除對(duì)象緩存操作執(zhí)行規(guī)則和主鍵生成規(guī)則,生成刪除對(duì)象緩存代碼。
所述注入單元包括:第四注入子單元,用于按照所述緩存配置文件中的刪除對(duì)象代碼注入規(guī)則,將所述刪除對(duì)象緩存代碼注入刪除對(duì)象業(yè)務(wù)代碼中,得到刪除對(duì)象融合代碼。
所述第一編譯單元包括:第四編譯子單元,用于對(duì)所述刪除對(duì)象融合代碼進(jìn)行編譯,得到獲取對(duì)象可執(zhí)行代碼。
當(dāng)然,在本實(shí)施例中,讀取模塊21具體可以包括:第二讀取單元,用于在調(diào)用所述業(yè)務(wù)代碼時(shí),讀取緩存配置文件。
相應(yīng)的,運(yùn)行模塊23具體包括:第二運(yùn)行單元或第三運(yùn)行單元。
第二運(yùn)行單元,用于在運(yùn)行所述業(yè)務(wù)代碼之前,運(yùn)行所述緩存代碼。
第三運(yùn)行單元,用于在運(yùn)行所述業(yè)務(wù)代碼之后,運(yùn)行所述緩存代碼。
需要說明的是,本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于裝置類實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上對(duì)本申請(qǐng)所提供的一種代碼處理方法及裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。