Springのアキテクチャ
Springフレームワークは分層フレームワークで、沢山のファンクションを持ち、約20モジュールがあります。以下の図のように
主に以下の5つの部分に分けられます。
Core Container
Core Containerには、Core、Beans、ContextとExpression Languageがあります。CoreとBeansは基盤の部分で、IoCとDIのファンクションを提供します。ここでは、BeanFactoryという概念がありまして、Factoryパターンを実装してシングルパターンができ、依頼関係と設置を分離することができます。
- Coreモジュールは主にSpringフレームワークのCoreツールクラスを含む、SpringのほかのモジュールはCoreモジュールのクラスをよく使って、Coreモジュールはほかのモジュールの基盤です。
- Beansモジュールは全てのアプリケーションが使うものです。例えば、設置ファイルのリーディング、beanの構造や管理、またInversion of Control /Dependency Injection(IoC/DI)に関わるクラスです。
- ContextモジュールはCoreとBeansを用いて構築されたものです。ContextはJNDIに似てるものを提供してインスタンスをリーディングします。ContextはBeansの特徴を継承し、大量のファンクションを提供します。
- Expression Languageは強大な言語表現式を提供し、インスタンスの操作を行います。
Data Access/Integration
Data Access/Integration層はJDBC、ORM、OXM、JMSとTransactionを含んでいます。
- JDBCモジュールは抽象的なJDBCを提供します。このJDBCモジュールは全てのJDBCのクラスを含んでいます。
- ORMモジュールは流行っているORMにAPI層を提供します。
Springは若干のORMフレームワークツールを提供します。例えば、JDO、HibernateとiBatisSQL Map。これらはSpringトランザクションやDAOの構造に従います。
- OXMモジュールはObject/XMLの抽象的な層を提供します。Object/XMLにはJAXB、Castor、XML-Beans、JiBXとXStreamを含んでいます。
- JMS(Java Messaging Service)モジュールはメッセージのPub/Subの特性を含んでいます。
- TransactionモジュールはトランザクションのAPIを提供します。
Web
Webモジュールはアプリケーションコンテストの上で、ウェブに基づくアプリケーションのコンテストを提供します。Web層にはWeb、Web-Servlet、Web-StrutsとWeb-Porletを含んでいます。
- Webモジュールは基盤Web特性を提供します。例えば、ファイルのアップロード、servlet listenersの使いなどです。
- Web-Servletモジュールweb.servlet.jarには、Springのmodel-view-controller(MVC)の実現を含んでいます。
- Web-StrutsモジュールにはStrutsの実現を含んでいます。ただ、Spring 3.0からもう廃棄されました。
- Web-PorletモジュールはPortlet環境やWeb-ServletモジュールのMVCの実現を含んでいます。
AOP
AOPモジュールはAOP標準に基づいて、Pointcutインターフェースを提供しています。また、AOPモジュールにはトランザクションも提供しています。
- AspectsモジュールはAspectJの実現を含んでいます。
- Instrumentationモジュールはclass instrumentationやclassloaderの実現を含んでいます。
Test
TestモジュールはJUnitとTestNGの実現を含んでいます。