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")); } }