Skip to content

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

TIENIPIA QUALIFIED STANDARD