Spring frameworkの基礎
Javaフレームワークの主流の1つSpring framework。
DI (依存性の注入)
などが大きな特徴。
■DI (依存性の注入)で実現できることは
1画面表示,画面遷移を行う部品
2業務処理を行う部品
3データベースの読み書きを行う部品
を分けて管理
*それぞれの独立性を高めて、例えば2の業務処理の仕様を変えたいときに2だけ直して2だけテストすれば大丈夫、このとき3はmockと呼ばれるスタブのようなダミーの部品を利用する
*EJBみたいなコンポーネント化して連携するより1と2、2と3をどうやって連携するかの仕組みをあまり考えなくてよい
*Singleton(オブジェクトが1つしか作られない)なので、同じ部品を同時に別のとこからも呼ばれたらどうしよう?とか心配しなくてよい
とかが便利なところ
interfaceクラスと実装クラスを作って、お互いの実装クラスは見えないようにすることで独立性を高める
Javaのオブジェクト指向では役割の塊ごとにオブジェクトという単位で分割してまとめるが、各機能を横断して共通して付与しなければいけない役割がどうしても残ってしまい、分割してまとめることが不十分
各機能を横断して付与したい役割を外出ししたのがアスペクト指向
*決まったとこでログに書き込む
*利用者の権限によるアクセス制御
*トランザクション管理の標準化
*例外処理の標準化
などが主な例
これを実現するための方法が
アドバイス(外出しした横断して共通の処理をする部品)
ポイントカット(各機能でアドバイスを呼ぶ所)
を実装すること
Spring frameworkでは主にアノテーション(@〜をクラスやメソッドの前に記述)でこれを実現
■Spring frameworkが備えている機能
Spring frameworkで用意されている機能はDIやAOPだけでなく他にもたくさんの機能が用意されている
Spring Tool Suite(STS)
RAD
Spring Roo
Starter
Spring Boot
Web
Spring Data Rest
Spring Mobile
Spring WebFlow
Spring MVC
Security
Spring Security OAuth
Spring Secrity
Big Data
Spring XD
Spring Hadoop
Data Access
Spring Data MongoDB
Spring Data JPA
Batch
Spring Batch
Enterprise Integration
Spring Integration
Sosial
Spring Social Github
Spring Social Facebook
Spring Social Twitter
Core
Spring DI
Spring AOP
Spring TX
...
■Spring Bootで簡単にSpring framework
開発者は各フレームワークの各機能を組み合わせてシステム開発を行っていたが、部品の選定や環境の設定などで開発者にはそれなりの知識が要求された
Spring Bootではあらかじめ一通りの機能が標準で盛り込まれており、面倒な準備をせず簡単に動くシステムを作れる
コンパイル、ビルド、デプロイというステップを踏まずに手軽に開発環境で動作の確認ができるのも利点