3.3. パッケージ構造
3.3.1. 標準レイヤー構造
機能別パッケージ(Feature Package)構造を基本とします。
com.tienipia.{サービス名}/
├── domain/
│ └── user/
│ ├── controller/
│ │ └── UserController.java
│ ├── service/
│ │ ├── UserService.java
│ │ └── UserServiceImpl.java
│ ├── repository/
│ │ └── UserRepository.java
│ └── dto/
│ ├── CreateUserRequest.java
│ └── UserResponse.java
├── global/
│ ├── config/
│ │ ├── SecurityConfig.java
│ │ └── WebConfig.java
│ ├── exception/
│ │ ├── GlobalExceptionHandler.java
│ │ ├── ErrorCode.java
│ │ └── ErrorResponse.java
│ └── common/
│ └── PageResponse.java
├── infra/
│ ├── external/
│ └── storage/
└── jooq/ # jOOQ codegen 自動生成 (target/)
└── tables/3.3.2. パッケージ構造の原則
domain/: ビジネスドメインごとにサブパッケージを構成します。global/: アプリケーション全体で共通して使用される設定、例外、ユーティリティを配置します。infra/: 外部システム連携、ストレージ関連のインフラコードを配置します。jooq/: jOOQ codegen が自動生成するパッケージです。target/generated-sources/配下に配置され、直接修正しません。- ドメイン間の直接参照は最小化し、必要な場合はインターフェースを通じて依存します。