Velocity-単例か非単例か

3661 ワード

Velocity 1.2バージョン以降、開発者はVelocityエンジン、単一モデル(singleton model)、および個別インスタンスモデル(separate instance model)の2つの選択を使用しています.これは同じコアコードの2つの使用方法で、VelocityをJavaアプリケーションに簡単に統合することができます.
単一インスタンスモード(Singleton Model)
これは従来のモデルであり、VelocityエンジンはJVM(またはWebアプリケーション)に共有インスタンスが1つしかなく、ローカル構成を容易にし、リソースを共有することができます.一例として、サーブレット2.2+互換性のあるWebアプリケーションでは、各Webアプリケーションが独自の実行例を持つことができ、これが非常に適切なモデルである.
 1 import org.apache.velocity.app.Velocity;
 2 import org.apache.velocity.Template;
 3 
 4 ...
 5 
 6 /*
 7  *  Configure the engine - as an example, we are using
 8  *  ourselves as the logger - see logging examples
 9  */
10 
11 Velocity.setProperty(
12     Velocity.RUNTIME_LOG_LOGSYSTEM, this);
13 
14 /*
15  *  now initialize the engine
16  */
17 
18 Velocity.init();
19 
20 ...
21 
22 Template t = Velocity.getTemplate("foo.vm");

個別インスタンスモデル(Separate Instance)
1.2リリースで新しく作成された、個別インスタンス・モードでは、JVM(またはWebアプリケーション)上でVelocityインスタンスの数を作成、構成できます.分散した構成をサポートしたい場合は、同じアプリケーションのテンプレートパス、ログなど、非常に役立ちます.個々のインスタンスを使用するためにorgを使用する.apache.velocity.app.VelocityEngineクラス.例を挙げると、上記の例と対応します.
 1 import org.apache.velocity.app.VelocityEngine;
 2 import org.apache.velocity.Template;
 3 
 4 ...
 5 
 6 /*
 7  *  create a new instance of the engine
 8  */
 9 
10 VelocityEngine ve = new VelocityEngine();
11 
12 /*
13  *  configure the engine.  In this case, we are using
14  *  ourselves as a logger (see logging examples..)
15  */
16 
17 ve.setProperty(
18     VelocityEngine.RUNTIME_LOG_LOGSYSTEM, this);
19 
20 /*
21  *  initialize the engine
22  */
23 
24 ve.init();
25 
26 ...
27 
28 Template t = ve.getTemplate("foo.vm");

あなたが見たように、これはとても簡単で分かりやすいです.Velocity単一インスタンスを使用するか、個別インスタンスを使用するかの要件では、いくつかの単純な構文の変化を除いて、アプリケーションおよびテンプレートには他の高レベルのデータ構造の変化はありません.
プログラマーとして、単一のインスタンスを使用する場合は、Velocityの内部クラスorgを使用する.apache.velocity.app.Velocity、単一でないインスタンスモデルを使用する場合はorgを使用します.apache.velocity.app.VelocityEngine.
orgの使用はいつでも適用する必要がある.apache.velocity.runtimeパッケージ内部のRuntime,RuntimeConstants,RuntimeSingletonまたはRuntimeInstanceクラスは,これらは内部で使用されるため,時間とともに変化する可能性がある.上記のようにorg.apache.velocity.runtimeパッケージのクラスは、VelocityとVelocityEngineのクラスでもあります.これらのクラスが必要なときに見つからない場合は、変更を提案することをためらわないでください.これらのクラスはアプリケーション開発者に提供されています.