ScalaでDDDを実践したり、テスタビリティの高いコードを書いてみたりするサンドボックス的な実験的なサンプルwebアプリ。 ユーザーの追加や、セッションの管理ができる
上位の層は層一つ一つがsbtのプロジェクトとなるマルチプロジェクト構成。
- Interface層
- Application層
- Service層
- Scenario層
- Domain層
- Query層
- Infrastructure層
要するにControllerを指す。ユーザーからのインプットを受け取ったり、アウトプットを返す。DIもここで制御する。
ユースケースを表現する層。リポジトリを呼び出したり、トランザクションを制御するのもこの層。書き込み処理にしか使わない。
Transactionという外部リソースのIOを抽象化したモデルを返す。
Scenario層から再利用されることを想定しているのでTransactionを合成することは原則しない。
Resultというひとつの処理の結果を抽象化したモデルを返す。 Service層のメソッドを複数呼び出してTransactionを合成してもよい。 原則再利用を想定しない。
エンティティと依存性逆転のためリポジトリインターフェイスを内包する。 CQRSの書き込み処理時にしか基本使わない
CQRSの読み込み処理時にしか使わない層。Interface層から直接呼び出される
Domain層のRespositoryとTransactionを実装する。