はじめてのSpring Framework

この2年くらい,Apache AvalonプロジェクトのFrameworkとExcaliburを使ってきたのですが,気が付くと時代はIoC/Dependency Injectionなるものに移っているようで,すっかりウラシマさんです(苦笑).
ということで,遅ればせながらIoC/Dependency Injectionな世界に入門しようと思います.
いろいろな実装があるようですが,「実践J2EEシステムデザイン(ISBN:4797322888)」がとても共感できたということもあって,Spring Frameworkを使ってみることにしました.Spring Frameworkのサイトには「Spring Framework Reference Documentation」というドキュメントがあったので,これに従って学習します.
1章の「Introduction」,2章の「Background information」と進んで,3章の「Beans and the Application Context」から具体的なSpringの使い方が説明されています.ということで,まずはお約束のあれをやってみなくては...
まず簡単なbeanを用意しました.

package study;

public class Foo {
    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

Avalonだと,ComponentとかConfigurableなんていうインタフェースをimplementsして,いろいろなメソッドを実装しなければいけなかったのですが,最近は単なるbeanとかPOJOかで済むというのは手軽でいいですね.
次にbean定義のXMLファイルを作成.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean name="foo" class="study.Foo">
        <property name="text"><value>Hello, World</value></property>
    </bean>
</beans>

Avalonの定義ファイルに比べればとても簡単なのですが,でもちょっと冗長な感じがします.<value>なんて書かなくても... って思うのですが.
最後に,とりあえず実行するためのクラスを.

package study;

import java.io.FileInputStream;
import org.springframework.beans.factory.xml.XmlBeanFactory;

public class Main {
    public static void main(String[] args) {
        try {
            XmlBeanFactory factory = new XmlBeanFactory(new FileInputStream("beans.xml"));
            Foo foo = (Foo) factory.getBean("foo");
            System.out.println(foo.getText());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Spring Frameworkでは,コンテナに相当するのはBeanFactoryというのですね.コンテナという言葉は響きが重過ぎるのだそうです.
ということでこのクラスを実行すると,

Hello, World

と無事に出力されました.
確かに簡単です.最初だけかもしれませんが,敷居が低いというのはいいことですね*1

*1:簡単なことが簡単に出来るだけでなく,難しいことが簡単に出来ると最高ですが,どうでしょうか.楽しみです.