Dependency Injectionタイプその4 - フィールド・インジェクション
フィールドにDIを行なうのがフィールド・インジェクションです。
フィールドには、Bindingアノテーションを使って指定します。この機能は、2.4から利用できます。
app.dicon |
<components>
<include path="convention.dicon"/>
<include path="aop.dicon"/>
<!-- コンポーネント定義 -->
<component name="fieldDI" class="FieldDI" instance="singleton">
</component>
<!-- コンポーネント定義 -->
<component name="message2" class="java.lang.String" instance="singleton">
<arg>"メッセージ2です。"</arg>
</component>
</components>
|
FieldDI.java |
public class FieldDI {
// ONGL式
@Binding(value = "new String(\"メッセージ1です。\")")
private String message1;
// component指定
@Binding(value ="message2")
private String message2;
public String getMessage() {
return this.message1 + "\r\n" + this.message2;
}
}
|
TestClass.java |
import org.seasar.framework.container.SingletonS2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
public class TestClass {
public static void main(String[] args) {
// S2Container初期化
SingletonS2ContainerFactory.init();
// コンポーネント取得
FieldDI fieldDI = SingletonS2Container.getComponent("fieldDI");
System.out.println(fieldDI.getMessage());
// S2Container破棄
SingletonS2ContainerFactory.destroy();
}
}
|
出力メッセージ |
メッセージ1です。
メッセージ2です。
|