groovy-seasarはS2Containerに標準で提供されている XMLファイルによる設定を置き換える目的で作成されたものです。 この章ではS2Containerについてのある程度の知識を前提として、 それをgroovy-seasarで置き換える方法について説明します。
まずはじめの出発点として、下記のようなXMLによる設定があるものとします。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components>
<component name="foo" class="java.lang.Integer">
<arg>0</arg>
</component>
<component class="java.util.Date">
<property name="time">foo</property>
</component>
</components>
XMLによる設定をgroovy-seasarに置き換えると下記のようになります。
import org.seasar.groovy.SeasarBuilder
new SeasarBuilder().components(){
component(name: "foo", class: Integer){
arg("0")
}
component(java.util.Date){
prop(name: "time", ref: "foo")
}
}
01行目で必要なライブラリをインポートしている以外は XMLによる設定とgroovy-seasarでのクロージャとが対応しているのがよくわかるかとおもいます。
この設定ファイルによって定義されるS2ContainerをJavaから呼び出すばあいは下記のようになります。
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;
public class QuickStart {
private static final String PATH = "quickstart/components.xml";
public static void main(String[] args) {
S2Container container = S2ContainerFactory.create(PATH);
System.out.println(container.getComponent("foo"));
}
}
groovy-seasarの場合もほとんどかわりません。
import org.seasar.framework.container.S2Container;
import org.seasar.groovy.S2ContainerGroovyFactory;
public class QuickStart {
private static final String PATH = "quickstart/components.groovy";
public static void main(String[] args) {
S2Container container = S2ContainerGroovyFactory(PATH);
System.out.println(container.getComponent("foo"));
}
}