目前nvelocity的典型用法是
//建立乙個模板引擎
velocityengine vltengine=new velocityengine();
//檔案型模板,還可以是
assembly
,則使用資源檔案
vltengine.setproperty(runtimeconstants.resource_loader,」file」);
//模板存放目錄
vltengine.init();
這對於呼叫次數很少,或者只在程式初始化呼叫的情形是適合的,但是對於**這種要多次呼叫模板的系統顯得就不太合適。可以看一下velocityengine的init方法實現:
/** this is the primary initialization method in the velocity
* runtime. the systems that are setup/initialized here are
* as follows:**
*/public virtual void init() }}
這其中包含了大量的對配置檔案的讀取,解析工作,工作日誌記錄等操作。其中還用到了反射等比較耗費效能的操作。
通過下面測試**
stopwatch stw = new stopwatch();
stw.start();
for (int i = 0; i < 100; i++)
stw.stop();
console.writeline(stw.elapsedmilliseconds);
可以發現,執行時間為7833毫秒,這是不能接受的。
其實nvelocity提供了單例的方法供我們呼叫,可參考官網的介紹(
這樣,將nvelocity的初始化放到靜態建構函式中執行,只執行一次,可以保證效能
NVelocity的基本用法
nvelocity常用語法指令 預設情況下,nvelocity解析是不分大小寫的,當然可以通過設定runtime.strict.math true,採用嚴格解析模式。嚴格區分大小寫有時候還是挺有用途的。如果在模板檔案中有這樣的包含檔案,發布改模板的時候,就會提示 include後面沒有括弧 的錯誤。...
單例模式及getInstance 的用法
一般在單例模式下使用.getinstance 建立物件 但並不是所有有私有構造方法,對外通過getinstance方法提供 例項的情況就是單例模式。注 單例模式 乙個類有且只有乙個例項。1,乙個私有的構造器 2,乙個私有的該類型別的變數 3,必須有乙個共有的返回型別為該類型別的方法,用來返回這個唯一...
單例模式及getInstance 的用法
本文 一般在單例模式下使用.getinstance 建立物件 但並不是所有有私有構造方法,對外通過getinstance方法提供 例項的情況就是單例模式。注 單例模式 乙個類有且只有乙個例項。1,乙個私有的構造器 2,乙個私有的該類型別的變數 3,必須有乙個共有的返回型別為該類型別的方法,用來返回這...