📚

Re:ゼロから始めるSpring Boot #2 プロジェクトモジュール設計

2023/12/04に公開

シングルモジュールプロジェクト

1つのプロジェクトに1のモジュールしか存在しないこと。
単一の注文機能を持つプロジェクトを作成する場合は、モジュール構造は以下となる。
"設定よりも規約(Convention OVer Configuration, COC)" の理念であるため、各レイヤーとそれぞれの役割を規約にできる。

src
│
main
├─java
   └─com
       └─rezerosb
           └─order
               ├─controller # コントローラーレイヤー:リクエストマッピング、フォーム受付、バリデーションなどの業務ロジック(サービス)を利用するための前処理・後処理を行う。
               ├─model # モデル:リポジトリーが取り扱う集合をなすオブジェクトを表現したもの。
               │ ├─dto
               │ └─entity
               ├─repository # 業務データ操作レイヤー:CRUD処理、検索、集計などを行う。
               └─service # サービスレイヤー:アプリケーション固有の業務ロジック。
               └─RezeroSpringBoot02SinglemodApplication # デフォルトではスタータークラスはモジュールと同じ階層でないとダメ。

マルチモジュールプロジェクト

1つのプロジェクト(機能)に複数モジュールが存在すること。
モジュール構造は以下となる。

├─java
  └─com
      └─rezerosb
          └─crm # CRM機能にactivityとsaleなどの複数モジュールを作成する設定。
              ├─activity
              │ ├─controller
              │ ├─repository
              │ └─service
              ├─sale
              │ ├─controller
              │ ├─repository
              │ └─service
              └──RezeroSb02MulmodApplication # デフォルトではスタータークラスはモジュールと同じ階層でないとダメ。

レイヤードアーキテクチャ

Springでは各コンポーネントは責務に応じてアノテーションが容易されいる。
下記リンク先が参考になる。
https://www.yo1000.com/spring-responsibilities-2020/

Discussion