アプリケーションコア層⚓︎
アプリケーションコア層で実装する機能の詳細を示します。 アプリケーションコア層ではドメインモデルと業務処理を実装します。
ドメインモデル⚓︎
ドメインモデルの構成要素であるエンティティと値オブジェクトは、それぞれの持つ属性が関心ごとの 1 つです。 Lombok と Bean Validation を使うことで、 Immutable などの特性に関わる実装や、属性の制約の実装を最小化して、属性の設計と実装間の見通しをよくします。 Lombok と Bean Validation の利用により、属性の制約が複雑になる場合は、コンストラクターや Setter 内で個別に入力チェックを実装します。 いずれにしても、ドメインモデルの属性の制約を漏れなく実装します。
Lombok⚓︎
エンティティと値オブジェクトの実装には Lombok のアノテーションを利用し、 Immutable などの制約付与や、 Getter / Setter の機能実装を実現します。
Bean Validation⚓︎
エンティティと値オブジェクトは、 Bean Validation または Lombok を用いて、宣言的にプロパティの制約を実装します。
業務処理⚓︎
その他の業務処理は、 CSR アーキテクチャ概要 - アプリケーションコア層 で示した通り、各コンポーネントへ役割に応じた処理を実装します。 いずれも依存関係逆転の法則に従い、インフラストラクチャ層への依存と、外部リソースへの直接アクセスを避けるよう注意してください。