Seasar2.4が出たので早速ダウンロード
昔に触って以来追加機能をかを軽くチェックするだけで手を動かして無かったので久しぶりに手を動かしてみようと思う
まずはHello world
自分はWebアプリよりは普通のJavaアプリが好きなので…
コンソールのHelloWorldから
package org.sample.s2.component; public interface Greeter { void greet(); }
ありがちですが
package org.sample.s2.component; public interface Messenger { String getMessage(); }
こんなインターフェイスを用意して
package org.sample.s2.component.impl; import org.sample.s2.component.Greeter; import org.sample.s2.component.Messenger; public class GreeterImpl implements Greeter { private Messenger messenger; public void greet() { System.out.println(messenger.getMessage()); } public Messenger getMessenger() { return messenger; } public void setMessenger(Messenger messenger) { this.messenger = messenger; } }
ありがちな
package org.sample.s2.component.impl; import org.sample.s2.component.Messenger; public class MessengerImpl implements Messenger { public String getMessage() { return "Hello world"; } }
実装をしてみる。
dicon用意だぜ
次のステップはDIコンテナにはつきものの設定ファイル。
ComponentAutoRegisterを使用してみるべ。
Mainという名前のクラスにmainメソッドを用意する予定なので、それをベースにクラスを探してもらうように記述をする。
app.dicon ----------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <component class="org.seasar.framework.container.autoregister.ComponentAutoRegister"> <initMethod name="addReferenceClass"> <arg>@org.sample.s2.Main@class</arg> </initMethod> <initMethod name="addClassPattern"> <arg>"org.sample.s2"</arg> <arg>".*Impl"</arg> </initMethod> </component> </components>
ついにmainメソッド
エントリポイントとなるクラスは以下の通り。
package org.sample.s2; import org.sample.s2.component.Greeter; import org.seasar.framework.container.S2Container; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; public class Main { private static final String CONFIG_PATH = "app.dicon"; public static void main(String[] args) { SingletonS2ContainerFactory.setConfigPath(CONFIG_PATH); SingletonS2ContainerFactory.init(); try { new Main().execute(); } finally { SingletonS2ContainerFactory.destroy(); } } private void execute() { S2Container con = SingletonS2ContainerFactory.getContainer(); Greeter g = (Greeter) con.getComponent(Greeter.class); g.greet(); } }
実行すると見慣れたHello worldの文字が見えました。
メデタシメデタシ。
何をした?
とりあえずHello worldを作成するために
- EclipseでJava Projectを作成
- ダウンロードしてきたseasar2.4のlibの中にあるjarをクラスパスに追加
- プログラムを書き書き
- diconファイルを書き書き
- メインのクラスを書き書き
- 実行
このくらいだとdicon書いて〜とかメンドクサイけど大きくなってくると楽さがわかるのかな?