2019.07.01
Spring Boot を使ってWebシステムを作成するときに、私は以下のようなパッケージの構成で進める事が多いです。
ただし、こうしなければいけないという正解はないと思います。
com.sample | |||
├ | app (アプリ名) | ||
│ | ├ | common | |
│ | │ | ├ | base |
│ | │ | ├ | dialect |
│ | │ | ├ | security |
│ | │ | ├ | processor |
│ | │ | └ | utils |
│ | └ | controllers | |
│ | └ | forms | |
└ | domain | ||
├ | models | ||
│ | └ | custom | |
├ | repositories | ||
├ | services | ||
├ | validations | ||
└ | exceptions |
システムの共通的なクラスを格納するパッケージ
各種クラスのベースクラスなどを設置する。
テンプレートエンジンであるThymeleafの独自タグ
認証関連で必要となるクラスをまとめておく
各種ユーティリティ関連クラス
各画面の制御で使用するクラスを格納するパッケージ
各画面のControllerを設置する。
各画面の formオブジェクトを設置する。
ビジネスロジック等のクラスをまとめるパッケージ
単一テーブルのEntityなどを管理するクラスを設置
SELECT分などで複数のテーブル結合を行った時のEntityを管理するクラスを設置
@autowiredするリポジトリを格納する
各種ビジネスロジックを管理するクラスを格納
各種入力バリデーションルールを格納する
業務処理中の例外用 Exceptionを定義し格納する