0
0

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アプリケーションにおける層について

Posted at

はじめに

Spring アプリケーションにおける「層(レイヤー)」の役割を、初学者の私なりに整理しました。
よく使われる主要な層に加えて、Presenter や Client 層についても簡単に紹介します。

対象者

  • あらためて「層(レイヤー)」について簡易的に学びたい人
  • Springについて初学者
  • 知識をふやしたい人

主要な層(Layered Architecture)

1. Presentation / Controller 層

  • クライアント(フロントエンドや API 呼び出し)からの HTTP リクエストを受け取る、最初の入り口
  • @Controller@RestController を使って定義する
  • URL・パラメータの受け渡し、初期エラー応答(認証・パラメータチェック)などを行う(実際の処理は Service 層に渡している)

2. Service(ビジネスロジック)層

  • Controller から渡されたデータを元に、業務処理や入力チェック・変換・ロジック制御を行う
  • @Service で定義し、処理が複数の Repository や外部 API を跨る時に中心となる層

3. Repository(Persistence / DAO)層

  • データベースへのアクセスを行う(CRUD 処理)
  • @Repository を使い、例外の変換(二重チェック)などの特別な処理も提供される

4. Database 層

  • 永続データを保存する本体(例:MySQL、PostgreSQL、MongoDB など)
  • アプリケーションコードから直接触ることは少なく、Repository 経由で間接的に操作される

他によく登場する層・概念

Presenter 層

  • Use Case(Service 処理)からの出力を、クライアントに返す適切な形式(JSON など)に整形する役割
  • Clean Architecture や DDD では明確に分かれていることがある

Client層(外部API呼出し)

  • 自分のアプリから他の API を呼び出す処理をまとめた層で、Spring では RestTemplate や WebClient を使い、通常は Service 層から呼び出す
  • 外部サービスを扱う専用の「クライアントクラス」を作ることで責務を分離している

Facade 層(時として使われる)

  • 複数の Service ロジックをまとめて Controller に提供する役割を果たす層
  • Service 層を単純にまとめたい場面や、複数処理の調整を一箇所で行いたいときに使われる
層名 使う注釈 主な責務 メリット
Presenter(optional) 自作または @Component データ整理・JSON変換、ビュー出力形式への加工など ロジック分離&統一フォーマット管理
Controller @Controller / @RestController リクエスト入口/エンドポイント処理 HTTP とアプリ処理の分離、役割が明確になる
Service @Service ビジネスロジックの実装、外部連携処理など 処理の集中化、各層の責務が明確
Client(外部) @Component 外部 API と通信し、DTO を定義して返す API 呼び出しのコードを整理、再利用しやすく
Repository @Repository DB 操作(CRUD)を担当 DB 操作の抽象化と例外処理の統一
Entity / Domain @Entity アプリの中心データ(ユーザー、注文など)を表現するモデル ドメインロジックの中心、マッピングの中心概念

おまけ(層をわける理由)

  • 責任を分割して管理しやすくするため(Separation of Concerns)
  • テストやリファクタリングがしやすくなる(モジュール毎に差し替えが可能)
  • 保守性、拡張性を高め、どこに何を書くかが明快になる

参考

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?