0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring Frameworkとは

Last updated at Posted at 2024-10-15

Spring Frameworkとは

Java開発におけるフレームワーク
以下全体像(一部)

Spring Boot

Spring アプリケーションを煩雑な設定をせずに迅速に作成する機能

Spring プロジェクト

  • Spring MVC
    Webアプリケーションを簡単に作成する機能
    (詳細を記述)
  • Spring Data
    データアクセスに対する機能
  • Spring Batch
    バッチ処理機能
  • Spring Batch
    認証/認可の機能
  • Spring コア
  • Spring DI
    依存性注入(Dependency Injection)の機能
  • Spring AOP
    アスペクト指向プログラミング(Aspect Oriented Programming)の機能

Spring MVCとは

まずMVCモデル

概要は省略

利点

  • 役割分担することで効率的に開発が行われる
  • 開発を行うエンジニアの分業が容易になる
  • 仕様変更に柔軟に対応できる

問題点

  • 業務で扱うデータ要件が複雑になればなるほど、Model が肥大化していく
    解決方法→レイヤアーキテクチャの導入
  • 入力に応じた出力要件が複雑になればなるほど、Controller と View の依存性が高くなる

Spring MVC

概要

Webアプリケーションを簡単に作成する機能
デザインパターンの一つ「フロントコントローラ・パターン」で実装
全てのリクエストは「フロントコントローラ」が受け取り、その後適切な処理をするコントローラに割り振る設計

全体像

image.png (91.0 kB)

構成要素

オブジェクト 機能概要
Dispatcher Servlet 全てのリクエストを受信するフロントコントローラ
Model 「Controller」から「View」に渡す「表示データ」など格納するオブジェクト
Controller リクエストに応じた処理を行う
View 画面表示処理を行う
Service 「Controller」から渡されデータベースへアクセスしてデータを取得、データの加工するなど、開発者が設計実装する ※図にはないし、Spring MVCには関係ない

レイヤアーキテクチャの導入

MVCモデルの問題点

業務で扱うデータ要件が複雑になればなるほど、Model が肥大化していく

を解決するためにModelに役割分担を持たせより明確に分割する
考え方をレイヤ化という
(ここはSpring MVCのModelと違う)

レイヤ化

レイヤ化にも色々な種類が存在するが
多分FS3では 実践ドメイン駆動設計(DDD)をもとにした 4 層でできている

レイヤー 機能概要
UI 層 (プレゼンテーション層) ユーザのリクエストを受付け、レスポンスを画面に表示する層 例:View
アプリケーション層 「クライアント」から受け取った「リクエスト」 を制御し、「ドメイン層」を使ってアプリケーションを制御する層 例:Controller
ドメイン層 「Domain Object」に対するアプリケーションの「サービス処理」を実行する層
インフラストラクチャ層 「Domain Object」に対する「CRUD操作」を行い、データの永続化を担う層

レイヤ化別コンポーネント

image.png (199.7 kB)

構成要素

レイヤー コンポーネント 機能概要
UI 層 (プレゼンテーション層) View 見た目、画面
アプリケーション層 Controller 「リクエスト」を処理にマッピングし、結果を「View」に渡すという制御を行う。主な処理は「Controller」内では行わず「ドメイン層」の「Service」を呼び出しを行う
ドメイン層 Domain Object 「サービス処理」を実行する上で必要な資源(Entityなど)
Service アプリケーションの「サービス処理」そのもの
Repository 「Repository」は「インターフェース」で、「データベースへのデータ操作」定義のみを記述(実装内容は記述しない)
インフラストラクチャ層 RepositoryImpl 「ドメイン層」で定めた「Repository」の実装クラス、「O/R Mapper」が「Repository」の実装クラスを作成する場合もある
O/R Mapper 「O:オブジェクト」「R:リレーショナルデータベース」とのデータをマッピングする
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?