diconファイルを使わない
いつもいつも、XMLに定義されたオブジェクトだけを注入すればよいわけじゃないよな、ユーザからの任意の入力もあるんだし…と思ったので、diconファイルを使わないでようにしてみる。
HogeImplを以下のように修正。
[HogeImpl.java]
public class HogeImpl implements Hoge {private Foo foo = null;
public void setFoo(Foo foo) {
this.foo = foo;
}public void showMessage() {
System.out.println(foo.getMessage());
}}
FooImplも修正。
[FooImpl.java]
public class FooImpl implements Foo {private String message = null;
public FooImpl(String message) {
this.message = message;
}public String getMessage() {
return message;
}}
クライアントも修正。(コードはあってるのかなぁ…)
[HelloClient .java]
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.impl.S2ContainerImpl;public class HelloClient {
private static String PATH = "Hello.dicon";
public static void main(String[] args) {
S2Container container = new S2ContainerImpl();
container.register(new FooImpl("任意の入力"));
container.register(HogeImpl.class);
Hoge hoge = (Hoge) container.getComponent(Hoge.class);
hoge.showMessage();
}}
で、実行。
動いた、動いた。
任意の入力
この場合、コンテナを使うメリットは何だろう?
注入するオブジェクトの組み立てが楽になる…ぐらいかな?HogeImplで、セッター・インジェクションがコンストラクタ・インジェクションになっても(ないとは思うけど)、コードの変更がない…とか。