mtak0235 / SYRoom

0 stars 0 forks source link

디렉토리 구조화 #4

Closed mtak0235 closed 2 months ago

mtak0235 commented 2 months ago
└─backend
    │  BackendApplication.java
    │  TestController.java
    │
    ├─common
    │  ├─config
    │  │      SecurityConfig.java
    │  │      SwaggerConfig.java
    │  │
    │  ├─exception
    │  │      BusinessException.java
    │  │      ConflictException.java
    │  │      GlobalExceptionHandler.java
    │  │      NotFoundException.java
    │  │      UserNotFoundException.java
    │  │      ValidationException.java
    │  │
    │  └─util
    │          DateTimeUtil.java
    │
    ├─payment
    │  ├─adapter
    │  │  ├─in
    │  │  │  └─web
    │  │  │          PaymentController.java
    │  │  │          PaymentDto.java
    │  │  │
    │  │  └─out
    │  │      └─persistence
    │  │              PaymentJpaEntity.java
    │  │              PaymentJpaRepository.java
    │  │              PaymentPersistenceAdapter.java
    │  │
    │  ├─application
    │  │  ├─port
    │  │  │  ├─in
    │  │  │  │      CreateDepositUseCase.java
    │  │  │  │      CreatePaymentUseCase.java
    │  │  │  │
    │  │  │  └─out
    │  │  │          LoadPaymentPort.java
    │  │  │          SavePaymentPort.java
    │  │  │
    │  │  └─service
    │  │          PaymentService.java
    │  │
    │  └─domain
    │          Deposit.java
    │          Payment.java
    │
    ├─request
    │  ├─adapter
    │  │  ├─in
    │  │  │  └─web
    │  │  │          StorageRequestController.java
    │  │  │          StorageRequestDto.java
    │  │  │
    │  │  └─out
    │  │      └─persistence
    │  │              StorageRequestJpaEntity.java
    │  │              StorageRequestJpaRepository.java
    │  │              StorageRequestPersistenceAdapter.java
    │  │
    │  ├─application
    │  │  ├─port
    │  │  │  ├─in
    │  │  │  │      AcceptStorageRequestUseCase.java
    │  │  │  │      CreateStorageRequestUseCase.java
    │  │  │  │
    │  │  │  └─out
    │  │  │          LoadStorageRequestPort.java
    │  │  │          SaveStorageRequestPort.java
    │  │  │
    │  │  └─service
    │  │          StorageRequestService.java
    │  │
    │  └─domain
    │          StorageRequest.java
    │
    ├─storage
    │  ├─adapter
    │  │  ├─in
    │  │  │  └─web
    │  │  │          StorageSpaceDto.java
    │  │  │          StoragesSpaceController.java
    │  │  │
    │  │  └─out
    │  │      └─persistence
    │  │              StorageSpaceJpaEntity.java
    │  │              StorageSpaceJpaRepository.java
    │  │              StorageSpacePersistenceAdapter.java
    │  │
    │  ├─application
    │  │  ├─port
    │  │  │  ├─in
    │  │  │  │      CreateStorageSpaceUseCase.java
    │  │  │  │      SearchStorageSpaceUseCase.java
    │  │  │  │
    │  │  │  └─out
    │  │  │          LoadStorageSpacePort.java
    │  │  │          SaveStorageSpacePort.java
    │  │  │
    │  │  └─service
    │  │          StorageSpaceService.java
    │  │
    │  └─domain
    │          StorageSpace.java
    │
    └─user
        ├─adapter
        │  ├─in
        │  │  └─web
        │  │          CreateUserRequest.java
        │  │          UserController.java
        │  │          UserDto.java
        │  │          UserResponse.java
        │  │
        │  └─out
        │      └─persistence
        │              UserJpaEntity.java
        │              UserJpaRepository.java
        │              UserPersistenceAdapter.java
        │
        ├─application
        │  ├─port
        │  │  ├─in
        │  │  │  │  CreateUserUseCase.java
        │  │  │  │  GetUserUseCase.java
        │  │  │  │
        │  │  │  ├─command
        │  │  │  │      CreateUserCommand.java
        │  │  │  │
        │  │  │  └─query
        │  │  │          GetUserQuery.java
        │  │  │
        │  │  └─out
        │  │          LoadUserPort.java
        │  │          SaveUserPort.java
        │  │
        │  └─service
        │          UserService.java
        │
        └─domain
                User.java
                UserType.java

이 프로젝트 구조는 도메인 주도 설계(DDD)와 헥사고날 아키텍처의 원칙을 따르고 있습니다.

common 패키지에는 전역적으로 사용되는 설정, 예외 처리, 유틸리티 클래스 등이 위치합니다.

mtak0235 commented 2 months ago

도메인 설명

도메인 설명

1. backend

backend는 전체 애플리케이션의 진입점이자 공통 기능을 담당하는 패키지입니다.

2. user

user 도메인은 사용자 관리와 관련된 모든 기능을 담당합니다.

3. storage

storage 도메인은 보관 공간과 관련된 모든 기능을 담당합니다.

4. request

request 도메인은 보관 요청과 관련된 모든 기능을 담당합니다.

5. payment

payment 도메인은 결제 및 보증금과 관련된 모든 기능을 담당합니다.

각 도메인은 독립적으로 운영되면서도 필요에 따라 다른 도메인과 상호작용합니다. 예를 들어, 보관 요청(request)이 생성될 때 사용자(user) 정보와 보관 공간(storage) 정보를 참조하며, 요청이 수락되면 결제(payment) 프로세스가 시작됩니다.