本發(fā)明涉及軟件開發(fā)領域,更具體地,涉及一種配置文件的設置方法及裝置。
背景技術:
在軟件開發(fā)的過程中,當開發(fā)者需要使用一個新的組件或者工具的時候,首先需要對該組件或工具進行配置然后再使用。在開發(fā)階段需要進行的配置,一般是環(huán)境配置和變量配置,比如數(shù)據(jù)庫連接信息、程序結(jié)構(gòu)和程序樣式等。
現(xiàn)有技術中對組件或工具進行配置的過程如下:首先通過配置類構(gòu)造函數(shù)創(chuàng)建出一個配置對象的實例,然后再多次調(diào)用這個配置對象的各個設置函數(shù)對這個配置對象進行相應地配置項設置。在此過程中,會多次調(diào)用該配置對象,還需要將這個配置對象實例維護到內(nèi)存中進行保存。
現(xiàn)有技術存在如下問題:多次調(diào)用該配置對象會造成代碼可讀性差,對哪些配置項進行了設置以及還需要對哪些配置項進行設置都需要手動排查,并且后期需要更改配置時,技術人員需要手動查找要修改的配置項的位置,造成后期維護困難。尤其當組件或者工具非常龐大的時候,開發(fā)人員往往需要進行大量的配置工作,整個配置的過程會異常地繁瑣和復雜,開發(fā)人員編寫配置文件的效率非常低,進而導致整個軟件開發(fā)的成本較高。
技術實現(xiàn)要素:
為了能夠克服或者至少部分地解決現(xiàn)有技術中存在的代碼可讀性差、后期維護困難、配置過程繁瑣復雜、開發(fā)效率低且開發(fā)成本高的問題,本發(fā)明提供一種配置文件的設置方法及裝置。
根據(jù)本發(fā)明的一個方面,提供一種配置文件的設置方法,包括:
通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入配置對象中。
其中,所述通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入配置對象中的步驟之前還包括:
創(chuàng)建一個配置對象或者調(diào)用一個配置對象。
其中,所述創(chuàng)建一個配置對象包括:采用單例模式創(chuàng)建一個單例配置對象;相應地,所述通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入配置對象中包括:
通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入所述單例配置對象中。
其中,所述通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入配置對象中包括:
s1,調(diào)用第一設置函數(shù)對所述配置對象進行第一項配置信息的設置,在設置完成后,返回第一次設置完成的所述配置對象;
s2,k分別取值為從2到n順序執(zhí)行下述步驟:調(diào)用第k設置函數(shù)對k-1次設置完成的所述配置對象進行第k項配置信息的設置,在設置完成后,返回第k次設置完成的所述配置對象,其中,n為配置信息的總項數(shù);
s3,完成所有配置信息的設置后,通過結(jié)束函數(shù)返回最終設置完成的所述配置對象。
其中,所述采用單例模式創(chuàng)建一個單例配置對象包括:
定義一個全局靜態(tài)變量;
定義一個全局靜態(tài)函數(shù),其中,在所述全局靜態(tài)函數(shù)的內(nèi)部,首先判斷所述全局靜態(tài)變量是否為空,若為空,則進入同步代碼塊對所述全局靜態(tài)變量進行第二次判斷是否為空;若為空,則調(diào)用配置類的構(gòu)造函數(shù)創(chuàng)建出一個配置類對象的實例,并將所述配置類對象的實例賦給所述全局靜態(tài)變量,返回所述全局靜態(tài)變量。
其中,所述創(chuàng)建一個配置對象或者調(diào)用一個現(xiàn)有配置對象的步驟之前還包括:
從后臺服務器獲取配置文件,解析所述配置文件從而獲取所述配置文件中的配置信息。
其中,所述解析所述配置文件從而獲取所述配置文件中的配置信息的步驟之后還包括:
將所述配置信息存儲至本地緩存文件;
當無法從后臺服務器獲取配置文件時,獲取本地緩存文件中所存儲的上一次通過解析所獲取的配置信息。
其中,所述配置信息包括配置項、配置參數(shù)和配置文件中所保存的數(shù)據(jù)中的一個或者多個。
根據(jù)本發(fā)明的另一個方面,提供一種配置信息的設置裝置,包括:設置模塊,用于通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入配置對象中。
其中,所述設置模塊具體用于:
調(diào)用第一設置函數(shù)對所述配置對象進行第一項配置信息的設置,在設置完成后,返回第一次設置完成的所述配置對象;
k分別取值為從2到n順序執(zhí)行下述步驟:調(diào)用第k設置函數(shù)對k-1次設置完成的所述配置對象進行第k項配置信息的設置,在設置完成后,返回第k次設置完成的所述配置對象,其中,n為配置信息的總項數(shù);
完成所有配置信息的設置后,通過結(jié)束函數(shù)返回最終設置完成的所述配置對象。
本發(fā)明提供的一種配置文件的設置方法及裝置,通過采用鏈式調(diào)用設置函數(shù)對配置對象進行配置信息的設置,配置過程簡單、代碼清晰且后期維護方便,能夠提高開發(fā)人員配置的效率,降低開發(fā)成本。
附圖說明
圖1為本發(fā)明一實施例提供的一種配置文件的設置方法的流程示意圖;
圖2為本發(fā)明另一實施例提供的一種配置文件的設置方法的流程示意圖;
圖3為本發(fā)明另一實施例提供的基于圖1中步驟s12所述通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入所述配置對象中的流程示意圖;
圖4為本發(fā)明另一實例提供的基于圖2中步驟s21所述采用單例模式創(chuàng)建一個單例配置對象的流程示意圖。
具體實施方式
下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式作進一步詳細描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
本發(fā)明一實施例提供一種配置文件的設置方法,包括:
通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入配置對象中。
在程序開發(fā)過程中,開發(fā)人員要使用某個組件或工具時,需要根據(jù)組件或工具提供的配置文件中的配置項或配置參數(shù)對組件或工具進行相應地配置后才能夠開始使用。配置文件中保存的數(shù)據(jù)對程序的執(zhí)行有指導性作用。因此,如何快速地將配置文件中的配置信息設置好,對于提高程序的開發(fā)效率至關重要。
現(xiàn)有技術中每設置一項配置信息的設置過程都需要調(diào)用對應的設置函數(shù),采用的是object.method()形式的調(diào)用,當要設置的配置信息的項數(shù)多達幾十上百個時,代碼中就會出現(xiàn)相應數(shù)目的object.method()形式的調(diào)用,采用這種形式的調(diào)用方法進行配置設置無疑是非常繁瑣的。
具體地,鏈式調(diào)用指的是如下調(diào)用形式:
object.method1().method2().method3().method4()……;
一般的設置函數(shù)是個無返回值的void方法,只是單純的去執(zhí)行設置邏輯,但是鏈式調(diào)用中的每個設置函數(shù)除了執(zhí)行設置邏輯外,還在設置完成后,將這個配置類對象本身返回了,所以object.method()只是一句調(diào)用,但是鏈式調(diào)用中的object.method1()不僅僅是一句調(diào)用語句,它本身就是該配置類對象,可以重復地調(diào)用方法,即可以在一次設置完成后,再次調(diào)用另一個設置函數(shù)對已經(jīng)進行過設置的所述配置類型對象進行再一次地設置,通過在上一次設置完成的配置對象的基礎上,調(diào)用不同的設置函數(shù)來完成所有配置信息的設置,最終實現(xiàn)將所有配置信息寫入配置對象中,完成配置過程。采用鏈式調(diào)用可以明顯減少代碼量,并且對哪些配置信息進行了設置會非常清晰,特別是在配置大型組件或工具時,當需要設置的配置信息的數(shù)量很多時,采用鏈式調(diào)用方式能夠有效減少代碼編寫量,提升配置效率。
本發(fā)明實施例提供的一種配置文件的設置方法,通過采用鏈式調(diào)用設置函數(shù)對配置對象進行配置信息的設置,配置過程簡單、代碼清晰且非常便于后期維護,能夠提高開發(fā)人員配置的效率,降低開發(fā)成本。
下面以對系統(tǒng)日志進行配置為例來說明本發(fā)明實施例的技術方案,通常在系統(tǒng)日志中需要配置如下相關信息:日志開關信息、應用上下文信息、日志標記信息以及日志等級信息等,具體地,可以采用如下代碼對上述配置信息進行設置:
通過一系列設置函數(shù)的鏈式調(diào)用將日志開關信息true、應用上下文信息、日志標記信息“test”和日志等級信息3,全部寫入所述配置對象logconfig中。每調(diào)用一個設置函數(shù)在設置完成后都會返回logconfig對象本身,因此可以在logconfig.setswitch(true)的基礎上繼續(xù)調(diào)用下一設置函數(shù)setcontext,直到完成日志開關信息、應用上下文信息、日志標記信息以及日志等級信息等配置信息的設置過程。
如圖1所示,為本發(fā)明另一實施例提供的一種配置文件的設置方法的流程示意圖,包括:
s11,創(chuàng)建一個配置對象或者調(diào)用一個配置對象;
s12,通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入配置對象中。
具體地,成員函數(shù)使用之前都需要先創(chuàng)建對象,再通過對象調(diào)用成員函數(shù)。本發(fā)明實施例步驟s11中創(chuàng)建一個配置對象前提是已經(jīng)定義了一個配置類,通過這個配置類的實例化創(chuàng)建一個配置對象,然后調(diào)用設置函數(shù)將需要設置的配置信息寫入,后續(xù)服務進程可以調(diào)用這個配置類從而完成相應地配置。創(chuàng)建一個配置對象是通過調(diào)用配置類的構(gòu)造函數(shù)實現(xiàn)的?;蛘撸嬖谝粋€現(xiàn)有配置對象,直接調(diào)用即可。
步驟s12在上一個實施例中已經(jīng)詳細闡述,在此不再贅述。
本發(fā)明實施例提供的一種配置文件的設置方法,通過采用鏈式調(diào)用設置函數(shù)對新創(chuàng)建的或已有的配置對象進行配置信息的設置,配置過程簡單、代碼清晰,能夠提高開發(fā)人員配置的效率,降低開發(fā)成本。
下面同樣以對系統(tǒng)日志進行配置為例來說明本發(fā)明實施例的技術方案,具體地,可以采用如下代碼實現(xiàn):
首先,通過日志配置類logconfig的構(gòu)造函數(shù)logconfig()實例化一個配置對象logconfig,然后,通過一系列設置函數(shù)的鏈式調(diào)用將日志開關信息true、應用上下文信息、日志標記信息“test”和日志等級信息3,全部寫入所述配置對象logconfig中并返回配置對象logconfig本身。
或者,采用如下代碼對上述配置信息進行設置:
通過日志配置類的構(gòu)造函數(shù)去鏈式調(diào)用一系列的設置函數(shù),因為構(gòu)造函數(shù)會返回創(chuàng)建的對象本身,因此也可以重復調(diào)用方法,完成日志開關信息、應用上下文信息、日志標記信息以及日志等級信息等配置信息的設置過程。
如圖2所示,為本發(fā)明另一實施例提供的一種配置文件的設置方法的流程示意圖,包括:
s21,采用單例模式創(chuàng)建一個單例配置對象;
s22,通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入所述單例配置對象中。
具體地,步驟s21中所述單例模式(singleton模式)可以確保類只有一個實例存在,所述單例配置對象是指唯一的配置類對象的實例。采用單例模式創(chuàng)建一個單例配置對象是指在全局有且僅有一個配置類對象的實例存在,外部調(diào)用者可以很方便地找到這個配置類對象,并對這個配置類對象進行調(diào)用從而獲得相關的配置信息。采用單例模式的優(yōu)點是由于只通過一個對象進行配置管理,可以減少系統(tǒng)資源開銷,并且由于外部調(diào)用者每次都獲取已經(jīng)存在的對象,因此可以提高創(chuàng)建速度,同時在任何地方使用此對象都是同一個對象,可以避免多實例創(chuàng)建使用時產(chǎn)生的程序邏輯錯誤。
采用單例模式創(chuàng)建一個單例配置對象的具體實現(xiàn)方式可以概括為以下步驟:創(chuàng)建一個配置類型的private靜態(tài)變量;創(chuàng)建一個public靜態(tài)函數(shù),用于將通過調(diào)用配置類的構(gòu)造函數(shù)所創(chuàng)建的唯一實例返回給外部調(diào)用者。
步驟s22中所述通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入所述單例配置對象中是指在創(chuàng)建一個單例配置對象后,基于這個單例配置對象,采用鏈式調(diào)用方式將需要進行設置的配置信息設置好,最終返回設置好的所述單例配置對象。每一個設置函數(shù)在完成相應的配置信息處理后都會返回所述單例配置對象,這樣下一個設置函數(shù)就可以基于上一次設置好的單例配置對象來繼續(xù)進行設置處理了,直至最終完成所有配置信息的設置。
本發(fā)明實施例提供的一種配置文件的設置方法,通過采用單例模式創(chuàng)建一個單例配置對象,并通過鏈式調(diào)用的方式完成配置信息的設置過程,使得全局有且僅有一個配置類對象存在,外部調(diào)用者可以很方便地找到這個配置類對象并獲取相關的配置信息,使得配置過程很方便管理,并且可以避免多實例創(chuàng)建并使用時產(chǎn)生的程序邏輯錯誤。
下面同樣以對系統(tǒng)日志進行配置為例來說明本發(fā)明實施例的技術方案。具體地,可以采用如下代碼對系統(tǒng)日志中的各種配置信息進行設置:
privatestaticlogconfiginstance;
publicstaticlogconfiggetinstance(){
//創(chuàng)建唯一配置對象類的實例,并賦給instance
returninstance;
}
publiclogconfigsetcontext(contextcontext){
//處理數(shù)據(jù)
returninstance;
}
logconfiglogconfig=logconfig().getinstance().setswitch(true)
.setcontext(this)
.settag(“test”)
.setlevel(3)
.over();
首先采用單例模式創(chuàng)建一個單例配置對象,創(chuàng)建的過程如下:定義一個logconfig類型的private靜態(tài)變量instance;然后定義一個public靜態(tài)函數(shù)getinstance(),在這個public靜態(tài)函數(shù)getinstance()的內(nèi)部通過調(diào)用構(gòu)造函數(shù)logconfig()創(chuàng)建唯一的配置類對象,并賦給private靜態(tài)變量instance,此時instance即為所創(chuàng)建的唯一的配置類對象的實例,然后通過return語句返回所述instance。然后,通過鏈式調(diào)用的方式將配置信息寫入所述單例配置對象instance中。每一個設置函數(shù)在完成數(shù)據(jù)處理后都會返回所述單例配置對象instance,這樣下一個設置函數(shù)就可以基于上次的instance對象來繼續(xù)進行設置處理了。
在上述實施例的基礎上,如圖3所示,為本發(fā)明另一實施例提供的基于圖1中步驟s12所述通過設置函數(shù)的鏈式調(diào)用將配置文件中的配置信息寫入配置對象中的流程示意圖,包括:
s31,調(diào)用第一設置函數(shù)對所述配置對象進行第一項配置信息的設置,在設置完成后,返回第一次設置完成的所述配置對象;
s32,k分別取值為從2到n順序執(zhí)行下述步驟:調(diào)用第k設置函數(shù)對k-1次設置完成的所述配置對象進行第k項配置信息的設置,在設置完成后,返回第k次設置完成的所述配置對象,其中,n為配置信息的總項數(shù);
s33,完成所有配置信息的設置后,通過結(jié)束函數(shù)返回最終設置完成的所述配置對象。
需要說明的是,此處和權(quán)利要求中使用的“第一”、“第二”、“第k”等術語僅僅是為了區(qū)別不同的描述對象,而并非有意限制任何時間或者空間上的順序。
具體地,步驟s31中調(diào)用第一設置函數(shù)對所述配置對象進行第一項配置信息的設置,通過調(diào)用第一設置函數(shù),在第一設置函數(shù)的內(nèi)部會通過參數(shù)傳遞的形式將具體的配置信息寫入配置對象中,完成設置邏輯,在每次設置完成后通過return語句返回第一次設置好的配置對象。這樣當進行步驟s32時,直接繼續(xù)調(diào)用第二設置函數(shù)對所述第一次設置好的配置對象進行設置,并返回第二次設置好的配置對象。然后繼續(xù)調(diào)用第三設置函數(shù)對所述第二次設置好的配置對象進行設置,……,調(diào)用第k設置函數(shù)對第k-1次設置好的所述配置對象進行第k項配置信息的設置,……,調(diào)用第n設置函數(shù)對第n-1次設置好的所述配置對象進行第n項配置信息的設置,并返回第n次設置完成的配置對象。n為配置信息的總項數(shù),根據(jù)實際需要進行多少項配置信息的設置而定。下一項配置信息的設置都是基于前一次配置完成的配置對象,就像環(huán)形一樣的一直設置下去直到所有配置信息設置完成。最后,步驟s33通過調(diào)用結(jié)束函數(shù)將最終設置好的配置對象進行返回。所述結(jié)束函數(shù)內(nèi)部僅僅是將最終設置好的配置對象進行返回,而不做其他任何處理,以便于外部服務程序調(diào)用最終設置好的配置對象。
同樣以對系統(tǒng)日志進行配置為例,上述各步驟可以通過如下代碼實現(xiàn):
首先調(diào)用第一設置函數(shù)setswitch對所述配置對象進行日志開關信息的設置,在設置完成后,通過return語句返回第一次設置好的所述配置對象logconfig;然后,調(diào)用第二設置函數(shù)setcontext對第一次設置好的所述配置對象進行應用上下文信息的設置,在設置完成后,返回第二次設置好的所述配置對象logconfig;重復上述步驟,依次對所述配置對象logconfig進行日志標記信息和日志等級信息的設置,最后,通過over()函數(shù)返回最終設置好的所述配置對象logconfig。
本發(fā)明實施例提供的一種配置文件的設置方法,通過采用鏈式調(diào)用的方式進行配置信息的設置,可以直接在原先配置的基礎上進行下一項配置的設置,極大的提高了設置配置的效率,使得代碼閱讀性更加明朗,更加方便后期對其進行維護和升級。
在上述實例例的基礎上,如圖4所示,為本發(fā)明另一實例提供的基于圖2中步驟s21所述采用單例模式創(chuàng)建一個單例配置對象的流程示意圖,包括:
s41,定義一個全局靜態(tài)變量;
s42,定義一個全局靜態(tài)函數(shù),其中,在所述全局靜態(tài)函數(shù)的內(nèi)部,首先判斷所述全局靜態(tài)變量是否為空,若為空,則進入同步代碼塊對所述全局靜態(tài)變量進行第二次判斷是否為空,若為空,則調(diào)用配置類的構(gòu)造函數(shù)創(chuàng)建出一個配置類對象的實例,并將所述配置類對象的實例賦給所述全局靜態(tài)變量,返回所述全局靜態(tài)變量。
前面已經(jīng)提及單例模式指的是全局有且僅有一個對象存在,本發(fā)明實施例提供一種采用單例模式創(chuàng)建一個單例配置對象的具體方法。具體地,步驟s41中定義一個全局靜態(tài)變量的目的是使用靜態(tài)方法對配置對象進行封裝使得該配置對象能夠在全局任意位置獲取到。步驟s42定義了一個全局靜態(tài)函數(shù),用于創(chuàng)建一個靜態(tài)訪問點,將創(chuàng)建的唯一實例返回給外部調(diào)用者,將所述全局靜態(tài)函數(shù)定義為靜態(tài)的目的是可以在任意其他函數(shù)中很方便的獲取到該全局靜態(tài)函數(shù)的引用。
為了更清晰地描述本發(fā)明實施例所提供的采用單例模式創(chuàng)建一個單例對象的具體方法,結(jié)合如下代碼進行說明:
在所述全局靜態(tài)函數(shù)的內(nèi)部,有雙重判斷和同步代碼塊,加同步代碼塊的目的是為了解決線程安全問題,而雙重判斷是為了解決效率問題。具體思路是首先檢查是否已經(jīng)創(chuàng)建了實例,如果還沒有創(chuàng)建,才進行同步,這樣就只進行一次同步,從而提高了效率。
具體地,首先判定全局靜態(tài)變量instance是否為空,通過if(instance==null)來進行判定的。如果instance為空,說明配置對象實例還沒有創(chuàng)建,則進行第二次校驗,之所以要進行二次校驗的目的是為了防止多線程并發(fā)從而導致的單例失敗,創(chuàng)建了多個實例。
為了防止并發(fā)引起單例出現(xiàn)問題,在進入第二次校驗處加了一個同步代碼塊synchronized,被synchronized修飾的代碼塊同一時間只能有一個線程可以執(zhí)行,如果有一個線程進入到同步代碼塊中,另外的線程都不能再進入這樣就避免了因為并發(fā)從而引起的多個實例的出現(xiàn)。
在同步代碼塊中再次對instance進行判定,如果進入到同步代碼塊的線程判定instance依舊是空,也就是if(instance==null)這個判斷條件依舊是真的,此時才開始logconfig真正的實例化操作。
logconfig實例化操作是通過調(diào)用logconfig的構(gòu)造函數(shù)來進行實例化實現(xiàn)的,具體是通過instance=newlogconfig();的方式來進行實例化,首先,調(diào)用配置類的構(gòu)造函數(shù)創(chuàng)建出一個配置類對象的實例,并將所述配置類對象的實例賦給所述全局靜態(tài)變量instance,實例化完成后將實例化對象instance返回出去。
當再次調(diào)用getinstance()時,首先會去判定instance是否為空,由于已經(jīng)對instance進行實例化了,此時instance不為空,此時直接將原先實例化的instance進行返回,這樣調(diào)用者就能夠快速的獲取到需要的logconfig配置對象了。
本發(fā)明實施例提供的一種配置文件的設置方法,通過使用單例模式,確保了整個應用中有且僅有一個配置對象的實例存在,并且通過引入雙重判斷和同步代碼塊,避免了因為多線程并非從而導致單例可能被多次實例化的問題,解決了線程安全問題的同時提高了效率。
本發(fā)明另一實施例,在上述實施例的基礎上,所述創(chuàng)建一個配置對象或者調(diào)用一個現(xiàn)有配置對象的步驟之前還包括:
從后臺服務器獲取配置文件,解析所述配置文件從而獲取所述配置信息。
具體地,在開始創(chuàng)建配置對象進行配置過程之前,需要獲取配置信息。配置信息存儲在配置文件中,配置文件是具有規(guī)范化數(shù)據(jù)格式的變量保存文件,采用的數(shù)據(jù)格式可以是xml格式、yaml格式或json格式等。通常需要將配置文件進行解析從而獲得所需要的配置信息。每次系統(tǒng)啟動的時候通過網(wǎng)絡從后臺服務獲取配置文件,然后對所述配置文件進行解析得到我們需要的配置信息。然后通過一系列的設置函數(shù)將我們解析好的配置信息設置到配置對象中,這樣配置文件都是從服務器后臺來進行獲取的,大大提高了配置文件的動態(tài)性。后續(xù)如果因為業(yè)務需求需要調(diào)整配置信息的設置,只需要在后臺進行更改后,客戶端下次啟動的時候就會使用新的配置信息來進行配置了。
本發(fā)明實施例提供的一種配置文件的設置方法,通過從后臺服務器獲取配置信息,能夠極大地提高配置過程的動態(tài)性和靈活性。
本發(fā)明另一實施例,在上述述實施例的基礎上,解析所述配置文件從而獲取所述配置文件中的配置信息的步驟之后還包括:
將所述配置信息存儲至本地緩存文件;
當無法從后臺服務器獲取配置文件時,獲取本地緩存文件中所存儲的上一次通過解析所獲取的配置信息。
具體地,為了防止網(wǎng)絡出現(xiàn)問題或者出現(xiàn)從后臺服務器無法獲取到配置文件的問題,先將上一次解析正確的配置信息存儲至本地緩存文件中,如果通過網(wǎng)絡獲取配置文件的時候發(fā)現(xiàn)無法獲取,則獲取本地緩存文件中的上一次解析所獲取的配置信息,此時就直接使用本地緩存文件中的配置信息來進行配置。
本發(fā)明實施例提供的一種配置文件的設置方法,通過獲取到的配置信息進行緩存,可以避免從后臺服務器無法獲取到配置信息時無法完成配置的問題,降低了配置的難度。
本發(fā)明另一實施例,在上述實施例的基礎上,所述配置信息包括配置項、配置參數(shù)和配置文件中所保存的數(shù)據(jù)中的一個或者多個。
具體地,配置項保存了系統(tǒng)和項目的相關配置,軟件、硬件、文檔等各類信息每發(fā)生一次變更,都要更新配置項,以便于更好的維護系統(tǒng)。每一個網(wǎng)絡應用或網(wǎng)絡服務所對應的應用程序中都會用到一些環(huán)境變量,這些環(huán)境變量的具體數(shù)值可能隨應用程序的運行環(huán)境改變而發(fā)生變化,為此,通常將這些環(huán)境變量存儲在配置文件中,當應用程序啟動時,通過加載該配置文件來獲取環(huán)境變量的具體數(shù)值,環(huán)境變量即是一種配置參數(shù)。目前包括軟件系統(tǒng)和硬件系統(tǒng)在內(nèi)的各類系統(tǒng)通常使用配置文件來記錄關于其配置的信息或者參數(shù),配置文件中所保存的數(shù)據(jù)即為關于其配置的信息或參數(shù)。本發(fā)明實施例中的配置信息包括配置項、配置參數(shù)、配置文件中所保存的數(shù)據(jù)中的一個或多個。
本發(fā)明另一實施例提供一種配置信息的設置裝置,包括:設置模塊,用于通過一系列設置函數(shù)的鏈式調(diào)用將配置信息寫入所述配置對象中。
具體地,設置模塊采用的鏈式調(diào)用的具體形式為:
object.method1().method2().method3().method4()……
一般的設置函數(shù)是個無返回值的void方法,只是單純的去執(zhí)行設置邏輯,但是鏈式調(diào)用中的每個設置函數(shù)除了執(zhí)行設置邏輯外,還在設置完成后,將這個配置類對象本身返回了,即鏈式調(diào)用中的object.method1()不僅僅是一句調(diào)用語句,它本身就是該配置類對象,可以重復地調(diào)用方法,即可以在一次設置完成后,再次調(diào)用另一個設置函數(shù)對已經(jīng)進行過設置的所述配置類型對象進行再一次地設置,通過重復地調(diào)用不同的設置函數(shù)完成所有的配置信息的設置。采用鏈式調(diào)用可以明顯減少代碼量,并且對哪些配置信息進行了設置會非常清晰,特別是在配置大型組件或工具時,采用鏈式調(diào)用方式能夠有效減少代碼編寫量,提升配置效率。
本發(fā)明實施例提供的一種配置信息的設置裝置,設置模塊通過采用鏈式調(diào)用設置函數(shù)對配置對象進行配置信息的設置,配置過程簡單、代碼清晰且后期維護方便,能夠提高開發(fā)人員配置的效率,降低開發(fā)成本。
本發(fā)明又一實施例,在上述實施例的基礎上,所述設置模塊具體用于:
調(diào)用第一設置函數(shù)對所述配置對象進行第一項配置信息的設置,在設置完成后,返回第一次設置完成的所述配置對象;
k分別取值為從2到n順序執(zhí)行下述步驟:調(diào)用第k設置函數(shù)對k-1次設置完成的所述配置對象進行第k項配置信息的設置,在設置完成后,返回第k次設置完成的所述配置對象,其中,n為配置信息的總項數(shù);
完成所有配置信息的設置后,通過結(jié)束函數(shù)返回最終設置完成的所述配置對象。
具體地,設置模塊調(diào)用第一設置函數(shù)對所述配置對象進行第一項配置信息的設置,通過調(diào)用第一設置函數(shù),在第一設置函數(shù)的內(nèi)部會通過參數(shù)傳遞的形式將具體的配置信息寫入配置對象中,完成設置邏輯,在每次設置完成后通過return語句返回第一次設置好的配置對象。設置模塊直接繼續(xù)調(diào)用第二設置函數(shù)對所述第一次設置好的配置對象進行設置,并返回第二次設置好的配置對象。然后繼續(xù)調(diào)用第三設置函數(shù)對所述第二次設置好的配置對象進行設置,……,調(diào)用第k設置函數(shù)對第k-1次設置好的所述配置對象進行第k項配置信息的設置,……,調(diào)用第n設置函數(shù)對第n-1次設置好的所述配置對象進行第n項配置信息的設置,并返回第n次設置完成的配置對象。n為配置信息的總項數(shù),根據(jù)實際需要進行多少項配置信息的設置而定。下一項配置信息的設置都是基于前一次配置完成的配置對象,就像環(huán)形一樣的一直設置下去直到所有配置信息設置完成。最后,設置模塊通過調(diào)用結(jié)束函數(shù)將最終設置好的配置對象進行返回。所述自定義的結(jié)束函數(shù)內(nèi)部僅僅是將最終設置好的配置對象進行返回,而不做其他任何處理。
本發(fā)明實施例提供的一種配置信息的設置裝置,設置模塊通過采用鏈式調(diào)用的方式進行配置信息的設置,可以直接在原先配置的基礎上進行下一項配置的設置,極大的提高了設置配置的效率,方便后期對其進行維護和升級。
本發(fā)明上述各實施例提供的配置文件的設置方法及裝置,通過采用單例模式創(chuàng)建配置對象,使得全局有且僅有一個配置類對象存在,外部調(diào)用者可以很方便地找到這個配置類對象并獲取相關的配置信息,使得配置過程很方便管理,并且采用鏈式調(diào)用設置函數(shù)對配置對象進行配置信息的設置,配置過程簡單、代碼清晰且后期維護方便,能夠提高開發(fā)人員配置的效率,降低開發(fā)成本。
最后應說明的是:以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的精神和范圍。