はじめての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:簡単なことが簡単に出来るだけでなく,難しいことが簡単に出来ると最高ですが,どうでしょうか.楽しみです.