Spring frameworkの基礎

Javaフレームワークの主流の1つSpring framework


DI (依存性の注入)

AOP (アスペクト指向)


などが大きな特徴。


■DI (依存性の注入)で実現できることは


1画面表示,画面遷移を行う部品

2業務処理を行う部品

3データベースの読み書きを行う部品


を分けて管理


*それぞれの独立性を高めて、例えば2の業務処理の仕様を変えたいときに2だけ直して2だけテストすれば大丈夫、このとき3はmockと呼ばれるスタブのようなダミーの部品を利用する

EJBみたいなコンポーネント化して連携するより1と2、2と3をどうやって連携するかの仕組みをあまり考えなくてよい

*Singleton(オブジェクトが1つしか作られない)なので、同じ部品を同時に別のとこからも呼ばれたらどうしよう?とか心配しなくてよい


とかが便利なところ


interfaceクラスと実装クラスを作って、お互いの実装クラスは見えないようにすることで独立性を高める



AOP (アスペクト指向)で実現できることは


Javaオブジェクト指向では役割の塊ごとにオブジェクトという単位で分割してまとめるが、各機能を横断して共通して付与しなければいけない役割がどうしても残ってしまい、分割してまとめることが不十分

各機能を横断して付与したい役割を外出ししたのがアスペクト指向


*決まったとこでログに書き込む

*利用者の権限によるアクセス制御

トランザクション管理の標準化

*例外処理の標準化


などが主な例


これを実現するための方法が


アドバイス(外出しした横断して共通の処理をする部品)

ポイントカット(各機能でアドバイスを呼ぶ所)


を実装すること

Spring frameworkでは主にアノテーション(@〜をクラスやメソッドの前に記述)でこれを実現



Spring frameworkが備えている機能


DIやAOPを実現するだけなら他のフレームワークでも可能

Spring frameworkで用意されている機能はDIやAOPだけでなく他にもたくさんの機能が用意されている


IDE

  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ではあらかじめ一通りの機能が標準で盛り込まれており、面倒な準備をせず簡単に動くシステムを作れる

コンパイル、ビルド、デプロイというステップを踏まずに手軽に開発環境で動作の確認ができるのも利点