Seasar2プログラミング
使い方(取り敢えず)
public static void main(String[] args) { // Seasar2のバージョンは、0.41を使用 // 設定ファイル(*.dicon)の設定・読み込み // デフォルトは、app.diconが設定されているので、変更したい場合は、引数のファイルパスを変更する SingletonS2ContainerFactory.setConfigPath(ファイルパス); // SeasarS2コンテナを初期化する。 SingletonS2ContainerFactory.init(); // コンテナを取得する. S2Container container = SingletonS2ContainerFactory.getContainer(); // コンポネント呼び出し // diconファイルの設定を付与したクラスのインスタンスを取得 クラス component = (キャスト) container.getComponent(クラスファイル(*.class)); // ここらへんに処理を書く // 使用したコンポーネントを廃棄する. container.destroy(); }
インジェクション
コンポーネントタグ内に指定する。
<component name="qualifier" class="classpath(パッケージ含む)" instance="singleton"> </component>
属性名 | 説明 |
---|---|
name | 識別子。この名称を使ってプログラム内で呼び出し可能。 |
class | クラス名。パッケージを含む。 |
instance | ライフサイクル。singleton,prototype等設定可能。 |
→詳しくは、http://s2container.seasar.org/2.4/ja/DIContainer.html#InstanceMode
コンストラクタインジェクション
<arg>引数1</arg> <arg>引数2</arg> ...
メソッドインジェクション
<initMethod name="method名"> <arg>引数1</arg> <arg>引数2</arg> ... </initMethod>
セッターインジェクション
<property name="フィールド名">セット値</property>
但し、セッターメソッドを用意しておく事。
フィールドの修飾子をpublicにしておけば、セッターメソッドを用意する必要はない。
※ privateなフィールドにセットしたい場合は、コンストラクタインジェクションを使用すると良い。
OGNL
インジェクションの引数として下記のものが使用可能。
OGNLリテラル一覧
型 | 例 |
---|---|
java.lang.String | "mojiretu" |
char | 'm' |
int | 123 |
long | 123L |
float | 1.0, 0.1F |
double | 0.01D |
java.math.BigDecimal | 100.000B |
java.math.BigInteger | 1000000H |
boolean | true, false |
java.util.List | {"list1", "list2"} |
java.util.Map | {"key1" : "val1", "key2" : "val2"} |
配列 | new String[]{"1","2","3"} |
オブジェクト | new java.text.SimpleDateFormat("yyyy/MM/dd") |
参考
- Seasar本家HP(The Seasar Project)
- S2Containerリファレンス(S2Container)