
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を定義し格納する