2008年12月13日土曜日

Seasar2を使ってみます(2)

今度はHelloクラスのコンストラクタからデータを入れてみます(コンストラクタ・インジェクション)。

Helloからsetterを削除してコンストラクタでlistを受けるようにします。
package test;

import java.util.List;

public class Hello {

private List<String> listNames;

public List<String> getListNames() {
return listNames;
}

public Hello(List<String> listNames) {
this.listNames = listNames;
}

public void sayHello() {
for (String name: listNames) {
System.out.println("Hello "+name+"! ");
}
}

}

example2.diconを作成します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<component class="java.util.ArrayList" name="list">
<initMethod name="add"><arg>"Hoge"</arg></initMethod>
<initMethod name="add"><arg>"Piyo"</arg></initMethod>
</component>
<component class="test.Hello" name="hello">
<arg>list</arg>
</component>
</components>

Main.javaを一応載せておきます。
package test;

import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;

public class Main {
public static void main(String args[]) {
SingletonS2ContainerFactory.setConfigPath("example2.dicon");
SingletonS2ContainerFactory.init();
S2Container container = SingletonS2ContainerFactory.getContainer();
Hello hello = (Hello)container.getComponent("hello");
hello.sayHello();
}
}

以上
.

0 件のコメント: