かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Seasar2.4系が出たので再入門

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を作成するために

  1. EclipseJava Projectを作成
  2. ダウンロードしてきたseasar2.4のlibの中にあるjarをクラスパスに追加
  3. プログラムを書き書き
  4. diconファイルを書き書き
  5. メインのクラスを書き書き
  6. 実行

このくらいだとdicon書いて〜とかメンドクサイけど大きくなってくると楽さがわかるのかな?