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/하위에 위치하며 직접 수정하지 않습니다.- 도메인 간 직접 참조는 최소화하고, 필요 시 인터페이스를 통해 의존합니다.