Seasar2プログラミング

事始め(Eclipse)

インストール=>Seasar2インストール - オボエガキ用

Eclipseの【Doltengプロジェクト】で作成、プロジェクト名とルートパッケージを入力して、完了。

使い方(取り敢えず)

  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")

参考

  1. Seasar本家HP(The Seasar Project)
  2. S2Containerリファレンス(S2Container)

TODO

  • OGNL
  • include
  • AOP