SpringFramework

ここではSpringMVCをメインにして、それら理解を進めるための概念図や備忘録を整理しました。


SpringMVCの理解を進める目的でTERASOLUNAサンプルアプリケーションの個人的なチュートリアル(サンプルアプリケーションの実行環境設定手順、業務仕様説明、カスタマイズ手順)を作成したので、あわせて参照いただきたい。

TERASOLUNAでのSpringMVCチュートリアル


*1:TERASOLUNA開発ガイドはGithub等で公開されている「TERASOLUNA Server Framework for Java (5.x) Development Guideline Documentation リリース5.3.1.RELEASE」を指します。とても判り易いドキュメントなので、しっかり理解したい人はこちらも参照していただきたい。


1.Springフレームワーク全体構成


Springフレームワーク全体における主な構成要素を以下に示す。



フレームワークArtifactId概要
Spring Corespring-coreSpringフレームワーク全般で必要となる中心機能。
Spring Beansspring-beansプログラムで必要となるコンポーネントをBeanとしてインスタンス化して利用するための機能。
Spring Contextspring-context
spring-context-support
アプリケーションのコンテキストを扱うための機能。
DIコンテナに必要なApplicationContextなどコンテキスト利用のためのクラス類がまとめられている。
Spring Expression Language
spring-expressionSpringの設定を行うXMLなどで、JSPのEL式のような機能を提供する。
Spring AOPspring-aopAOP(Aspect Oriented Programming)のインタフェースを提供する。
機能としてはメソッドのインターセプト定義をし、共通処理を組み込むなど。
これらはAspectJ(Xerox社オープンソースライブラリ)の機能を核にして作成されており、実質的な実装はこれとなる。
Spring JDBCspring-jdbc標準JavaAPIであるJDBC(Java Database Connectivity)の機能を提供する。
Spring Object/Relational Mappingspring-ormHibernate、iBatisといったORM(Object Relational Mapping)のための統合層を提供する。
Spring Transactionspring-txトランザクション管理機能を提供する。
Spring 各ORMのトランザクションを統一的に扱う方法が用意されている。
Spring Webspring-webWebアプリケーションのための機能を提供する。
(HTTP通信、マルチパートファイルなど)
Spring Web MVC
spring-webmvcSpringMVCに関する機能を提供する。
DispatcherServletがコアとなり、各機能の呼び出しを全て行う。



2.DIコンテナ概要

Springフレームワークのコア機能であるDIは「Dependency Injection」の略で「依存性注入」を実現する機能となる。

IoC(Inversion of Control)とも呼ばれる。

主な目的はコンポーネント(作成したプログラム部品)から特定のデータや設定を排除し、プログラム間疎結合の実現などにある。

これら詳細の概念やメリットについては、各種記事や文献を参考いただきたい。


基本となるDIコンテナの簡単な処理イメージを以下に示す。

DIコンテナ機能により、コンポーネントから依存性を排除する以外に、インスタンスの管理(newの箇所)もフレームワーク側へ移譲することができる。




3.SpringMVC概要

SpringMVCの全体構成(構成、階層、処理フロー)を以下に示す。

※TERASOLUNA開発ガイドの図を転載(*1)




※リンク集

■SpringMVC(全体の流れが可視化された図がとても判り易い)

01.基本概念:全体的な処理フロー - soracane


■Spring概要