S2GroovyBuilder

##### ドキュメント

- 概要
- クイックスタート
- ヒント
- 文法
- ダウンロード

##### Project Documentation

- About S2GroovyBuilder
- Project Info
- Project Reports
- Development Process

## クイックスタート

groovy-seasarはS2Containerに標準で提供されている XMLファイルによる設定を置き換える目的で作成されたものです。 この章ではS2Containerについてのある程度の知識を前提として、 それをgroovy-seasarで置き換える方法について説明します。

### XMLの置き換え

まずはじめの出発点として、下記のような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"));
        }
    }