1. Software Framework概要
TERASOLUNA Server Framework は、Spring Frameworkを土台とし、さらに3.3. OSS(オープンソースソフトウェア)を組み合わせています。
さらにプロジェクトごとに必要なOSSがあれば、利用したいJARライブラリを追加すること(Mavenの利用を推奨)で、独自に拡張することができます。
図1-1. フレームワーク概要
2. 主な構成要素
TERASOLUNA Server Framework を構成する標準のライブラリは以下のようになっています。
2.a. DIコンテナ
DIコンテナには、Spring Frameworkを利用します。
DIコンテナを利用することで、インターフェースと実装を切り分けしたものに対して、 アプリケーションの実行時に、DIコンテナのルールに従って、インターフェース実装を紐付けてインスタンスを生成します。 ※Spring Framework の DIコンテナのルール:呼出元のインターフェースに@Autowiredを付けることで、@Controller, @Service, @Repositoryがついているクラス(対象のインターフェースをimplementsしたもの)を自動でインスタンス生成してくれます。
また、インターフェースと実装を切り分けることで、開発中や開発後の仕様変更やデバッグにも強いアーキテクチャを構築することができます。
2.b. MVCフレームワーク
MVCフレームワークには、Spring MVCを利用します。
MVCフレームワークとは、クラスを以下の3種類の役割に分けて考えるMVCモデルを採用したフレームワークです。
- Model(データの保持、管理を担う。)
- View(クライアントへの出力(UIの提供を含む)を担う。)
- Controller(画面遷移の制御、ドメイン層のServiceの呼び出しを担う。)
2.c. O/R Mapper
O/R Mapperには、MyBatis または JPA を利用します。
O/R Mapperとは、リレーショナルデータベースから取得した情報(テーブル構造)を Javaオブジェクトと対応付ける機能です。
2.d. View
Viewには、JSPを利用します。
- JSP ※Viewのレイアウトを共通化する場合は、Tilesを利用します。
- Apache Tiles 3.0
2.e. セキュリティ
セキュリティには、Spring Securityを利用します。
Spring Securityには、以下の機能を提供しています。
■セキュリティ対策の基本機能
No | 機能 | 説明 |
---|---|---|
1 | 認証機能 | アプリケーションを利用するユーザーの正当性を確認する機能。 |
2 | 認可機能 | アプリケーションが提供するリソースや処理に対してアクセスを制御する機能。 |
■セキュリティ対策の強化機能
No | 機能 | 説明 |
---|---|---|
1 | セッション管理機能 | セッションハイジャック攻撃やセッション固定攻撃からユーザーを守る機能、セッションのライフサイクル(生成、破棄、タイムアウト)を制御するための機能。 |
2 | CSRF対策機能 | クロスサイトリクエストフォージェリ(CSRF)攻撃からユーザーを守るための機能。 |
3 | セキュリティヘッダ出力機能 | Webブラウザのセキュリティ対策機能と連携し、ブラウザの機能を悪用した攻撃からユーザーを守るための機能。 |
2.f. バリデーション
単項目チェックには、BeanValidation もしくは Hibernate Validator を利用します。
相関チェックには、Bean Validation もしくは Spring Validation を利用します。
3. 利用するOSSについて(利用頻度が高いものを抜粋)
利用頻度が高いOSSは以下の通りです。
No | Type | GroupId | ArtifactId | 概要 |
---|---|---|---|---|
1 | Bean変換 | net.sf.dozer | dozer | dozerは、一つのBeanを他のBeanにフィールド値を簡単にコピーすることができます。また、コピー元クラスとコピー先クラスで型が異なるコピーや、ネストしたBean同士のコピーも容易に行うことができます。 |
2 | Bean変換 | org.apache.commons | commons-lang3 | commons-lang3は、java.langパッケージを拡張したライブラリで、Utilメソッドが豊富です。 |
3 | 日付操作 | joda-time | joda-time | joda-timeは、DateとCalendarに比べ日付への利用が簡単に可能で、また拡張が容易にできます。 |