liguofeng29’s blog

個人勉強用ブログだっす。

Dependency Injectionタイプその1 - コンストラクタ・インジェクション

コンストラクタの引数にDIを行なうのがコンストラクタ・インジェクションです。
コンストラクタの引数には、componentタグの子タグであるargタグを使って指定します。
app.dicon
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
 
<components>
  <include path="convention.dicon"/>
  <include path="aop.dicon"/>
 
    <!-- コンポーネント-->
    <component name="construtorDI" class="ConstrutorDI" instance="singleton">
          <!-- 引数1 -->
          <arg>"コンストラクターDI後のメッセージです。"</arg>
          <!-- 引数2 -->
          <arg>"引数2です。"</arg>
    </component>
 
</components>

 

ConstrutorDI.java
public class ConstrutorDI  {
 
    private String message;
 
    public ConstrutorDI(String message1, String message2) {
        this.message = message1 + message2;
    }
 
    public String getMessage() {
        return this.message;
    }
}

 

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();
 
        // コンポーネント取得
        ConstrutorDI consDI = SingletonS2Container.getComponent("construtorDI");
        System.out.println(consDI.getMessage());
 
        // S2Container破棄
        SingletonS2ContainerFactory.destroy();
    }
}

 

出力メッセージ
コンストラクターDI後のメッセージです。引数2です。