Closed mtak0235 closed 2 months ago
backend
는 전체 애플리케이션의 진입점이자 공통 기능을 담당하는 패키지입니다.
BackendApplication.java
: 스프링 부트 애플리케이션의 메인 클래스입니다.common
패키지: 전체 애플리케이션에서 공통으로 사용되는 기능들을 포함합니다.
config
: 보안, Swagger 등의 설정 클래스들이 위치합니다.exception
: 전역 예외 처리와 커스텀 예외 클래스들이 정의됩니다.util
: 날짜 처리 등의 유틸리티 클래스들이 위치합니다.user
도메인은 사용자 관리와 관련된 모든 기능을 담당합니다.
주요 기능:
핵심 엔티티: User
주요 유스케이스: CreateUserUseCase
, GetUserUseCase
storage
도메인은 보관 공간과 관련된 모든 기능을 담당합니다.
주요 기능:
핵심 엔티티: StorageSpace
주요 유스케이스: CreateStorageSpaceUseCase
, SearchStorageSpaceUseCase
request
도메인은 보관 요청과 관련된 모든 기능을 담당합니다.
주요 기능:
핵심 엔티티: StorageRequest
주요 유스케이스: CreateStorageRequestUseCase
, AcceptStorageRequestUseCase
payment
도메인은 결제 및 보증금과 관련된 모든 기능을 담당합니다.
주요 기능:
핵심 엔티티: Payment
, Deposit
주요 유스케이스: CreatePaymentUseCase
, CreateDepositUseCase
각 도메인은 독립적으로 운영되면서도 필요에 따라 다른 도메인과 상호작용합니다. 예를 들어, 보관 요청(request
)이 생성될 때 사용자(user
) 정보와 보관 공간(storage
) 정보를 참조하며, 요청이 수락되면 결제(payment
) 프로세스가 시작됩니다.
이 프로젝트 구조는 도메인 주도 설계(DDD)와 헥사고날 아키텍처의 원칙을 따르고 있습니다.
각 도메인(user, storage, request, payment)은 독립적인 패키지 구조를 가집니다.
각 도메인 패키지 내부는 헥사고날 아키텍처의 구성요소를 반영합니다:
adapter: 외부 시스템과의 통신을 담당 (in: 인바운드, out: 아웃바운드)
application: 비즈니스 로직을 담당 (port: 인터페이스, service: 구현)
domain: 핵심 비즈니스 로직과 엔티티를 포함
common 패키지에는 전역적으로 사용되는 설정, 예외 처리, 유틸리티 클래스 등이 위치합니다.