4.7 KiB
패키지 구조 표준
레이어드 아키텍처 패키지 구조
├── {SERVICE} │ ├── domain │ ├── service │ ├── controller │ ├── dto │ ├── repository │ │ ├── jpa │ │ └── entity │ ├── config └── common ├── dto ├── util ├── response └── exception
Package명:
- com.{ORG}.{ROOT}.{SERVICE} 예) com.unicorn.lifesub.mysub, com.unicorn.lifesub.common
변수:
- ORG: 회사 또는 조직명
- ROOT: Root Project 명
- SERVICE: 서비스명으로 Root Project의 서브 프로젝트임
예시
com.unicorn.lifesub.member
├── MemberApplication.java
├── controller
│ └── MemberController.java
├── dto
│ ├── LoginRequest.java
│ ├── LogoutRequest.java
│ └── LogoutResponse.java
├── service
│ ├── MemberService.java
│ └── MemberServiceImpl.java
├── domain
│ └── Member.java
├── repository
│ ├── entity
│ │ └── MemberEntity.java
│ └── jpa
│ └── MemberRepository.java
└── config
├── SecurityConfig.java
├── DataLoader.java
├── SwaggerConfig.java
└── jwt
├── JwtAuthenticationFilter.java
├── JwtTokenProvider.java
└── CustomUserDetailsService.java
클린 아키텍처 패키지 구조
├── biz │ ├── usecase │ │ ├── in │ │ ├── out │ ├── service │ └── domain │ └── dto ├── infra │ ├── controller │ ├── dto │ ├── gateway │ │ ├── repository │ │ └── entity │ └── config
Package명:
- com.{ORG}.{ROOT}.{SERVICE}.biz
- com.{ORG}.{ROOT}.{SERVICE}.infra 예) com.unicorn.lifesub.mysub.biz, com.unicorn.lifesub.common
변수:
- ORG: 회사 또는 조직명
- ROOT: Root Project 명
- SERVICE: 서비스명으로 Root Project의 서브 프로젝트임
예시
com.unicorn.lifesub.mysub
├── biz
│ ├── dto
│ │ ├── CategoryResponse.java
│ │ ├── ServiceListResponse.java
│ │ ├── MySubResponse.java
│ │ ├── SubDetailResponse.java
│ │ └── TotalFeeResponse.java
│ ├── service
│ │ ├── FeeLevel.java
│ │ └── MySubscriptionService.java
│ ├── usecase
│ │ ├── in
│ │ │ ├── CancelSubscriptionUseCase.java
│ │ │ ├── CategoryUseCase.java
│ │ │ ├── MySubscriptionsUseCase.java
│ │ │ ├── SubscribeUseCase.java
│ │ │ ├── SubscriptionDetailUseCase.java
│ │ │ └── TotalFeeUseCase.java
│ │ └── out
│ │ ├── MySubscriptionReader.java
│ │ ├── MySubscriptionWriter.java
│ │ └── SubscriptionReader.java
│ └── domain
│ ├── Category.java
│ ├── MySubscription.java
│ └── Subscription.java
└── infra
├── MySubApplication.java
├── controller
│ ├── CategoryController.java
│ ├── MySubController.java
│ └── ServiceController.java
├── config
│ ├── DataLoader.java
│ ├── SecurityConfig.java
│ ├── SwaggerConfig.java
│ └── jwt
│ ├── JwtAuthenticationFilter.java
│ └── JwtTokenProvider.java
└── gateway
├── entity
│ ├── CategoryEntity.java
│ ├── MySubscriptionEntity.java
│ └── SubscriptionEntity.java
├── repository
│ ├── CategoryJpaRepository.java
│ ├── MySubscriptionJpaRepository.java
│ └── SubscriptionJpaRepository.java
├── MySubscriptionGateway.java
└── SubscriptionGateway.java
common 모듈 패키지 구조
├── common ├── dto ├── entity ├── config ├── util └── exception
com.unicorn.lifesub.common
├── dto
│ ├── ApiResponse.java
│ ├── JwtTokenDTO.java
│ ├── JwtTokenRefreshDTO.java
│ └── JwtTokenVerifyDTO.java
├── config
│ └── JpaConfig.java
├── entity
│ └── BaseTimeEntity.java
├── aop
│ └── LoggingAspect.java
└── exception
├── ErrorCode.java
├── InfraException.java
└── BusinessException.java