Open Source Web Development Tutorials - Dev Shed
Spring Framework入門!:Spring Frameworkを試そう
(2008/11/18公開)
Spring Frameworkの概要
この記事では、Spring Frameworkについて解説します。最初のセクションでは、なぜSpring Frameworkなのかについて解説します。2番目と3番目のセクションでは、Spring Frameworkを使用してビジネスロジックを実装する方法について説明します。4番目と5番目のセクションでは、Spring Frameworkを使用するアプリケーションを作成します。
エンタープライズアプリケーションでは、ビジネスロジックは継続的なデータを変換するための基礎となります。エンタープライズアプリケーションにおいて、ビジネスロジックレイヤが最も重要なレイヤと見なされるのはこの理由からです。一般に、ビジネスロジックを実装するために使用されるJEE(Java Enterprise Edition)コンポーネントはEJB(Enterprise Java Beans)でした。しかし、EJBは重量級のコンポーネントで、実行にはアプリケーションサーバーが必要です。
これが、Spring Frameworkが導入されるまでの状況でした。Spring Frameworkは、ビジネスロジックを実装するオブジェクトを走らせることのできる軽量級のコンテナとなります。つまり、Spring Frameworkをベースとしたビジネスオブジェクトは、アプリケーションサーバーがなくても実行できます。
Spring Frameworkとは
Spring Frameworkの定義は「IoC(制御の反転)とAOP(アスペクト指向プログラミング)を実装した軽量級のコンテナを持つ、オープンソースの階層化されたJava/J2EEアプリケーションフレームワーク」です。ここで重要な要素は、「階層化されたアプリケーションフレームワーク」「IoC(制御の反転)とAOP(アスペクト指向プログラミング)」です。これらの要点は、次の2つに大きく分類されます。
1.パターン
2.フレームワークのコンポーネント
前者は、Spring Frameworkでサポートされる設計パターンを、後者はフレームワークを構成するコンポーネントを指します。
Springのコアになるパターンは次の2つです。
・制御反転
・アスペクト指向プログラミング
前者はIoC、後者はAOPと呼ばれることもあります。以下では、これらの詳細について説明します。
制御反転(Inversion-of-Control)は、IoCと略されます。IoCは「一連のプロシージャ呼び出しにより必須の形式で表現される、従来の対話型モデルと比較して、制御フローが反転されるような概念、およびそれに関連付けられた一連のプログラミング技法」です。つまり、プログラマがフレームワークのプロシージャやメソッドを呼び出すのではなく、プログラマによって作成されたプロシージャがこのフレームワークにより呼び出されます。IoCは、「ハリウッド原則」とも呼ばれます。ハリウッド原則とは、「電話してこないでね、用があればこちらから電話するから」というものです。
IoCは、実行時に依存性を「導入する」ために使用されます。このパターンを使用する場合、特定のオブジェクトの依存性はコンパイル時には決定されません。その代わりに、オブジェクトに要求される依存性は実行時に、フレームワークによって提供されます。このため、このパターンを使用することで、プログラマはすべての依存性をコンパイル時に提供する負荷から解放されます。
アスペクト指向プログラミング(Aspect Oriented Programming 略してAOP)の定義は、「関心事、特に横断的関心事を、モジュール化の前作業として分離することを目的としたプログラミング手法」です。ここで重要なのは、関心事の分離です。関心事というのはアプリケーションのモジュールに関する別の用語です。ここでは、モジュールとはアプリケーションの機能を指します。
関心事の分離とは、アプリケーションをモジュールに分割し、モジュール間で互いに機能が重ならないようにすることです。ただし、モジュール/関心事の一部の機能は、常に別のモジュール/関心事と重なることになります。ログ出力は、このような関心事の例です。AOPでは、横断的あるいは重なったの関心事をカプセル化する技法を提供しています。言い換えると、AOPを使用すると、開発者は重なっている関心事をカプセル化できます。
Springでは、IoCとAOPの両方が使用できます。これらは、Spring Frameworkの中核に組み入れられています。Spring Frameworkについて注目すべきもう1つの要素は、階層化アーキテクチャのサポートです。このサポートは、次に示すような各種のコンポーネントにより提供されています。
1.MVCコンポーネント
2.IOCコンテナ
3.DAOサポート
これら3つは、プレゼンテーション、ビジネス、継続性の各レイヤに提供されています。次に、それぞれの概要を示します。
1.MVCコンポーネント:Spring Frameworkの柔軟性により、任意のMVCフレームワークを一緒に使用できます。しかし、Spring FrameworkにはSpring MVCという独自のフレームワークも用意されています。Spring MVCは、MVC-Model 2 for JSPを実装しています。このため、コントローラとしてServletとJSP taglibが用意されており、開発者が参照できます。
2.IoCコンテナ:ビジネスロジックレイヤは、Spring Frameworkで提供されているIoCを使用することで、ほかのレイヤと結合することなく開発できます。IoCコンテナは、このフレームワークの中核コンポーネントです。IoCにより、開発者はビジネスロジックをPOJO (Plain Old Java Object:何も手を加えない標準のJavaオブジェクトの意味)として実装でき、それらのオブジェクトを組み合わせて、実行時に導入または呼び出しを行うことができます。この手法により、ビジネスオブジェクトをコンパイル時に依存関係として指定する必要がなくなります。
3.DAOサポート:Spring Frameworkでは、継続的なデータにアクセスするため、JDBC、Hibernate、iBatisなど任意のテクノロジーを使用できます。Spring Frameworkでは、DAOサポートコンポーネントによりこの機能が実現されています。開発者は、DAOコンポーネントを使用して、ほとんどの継続的フレームワークをプラグインにすることができます。
以上が、Spring Frameworkの概要です。次に、Spring Frameworkを使用するための手順、特にSpring FrameworkのIoC機能について解説します。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








