Code Convention

https://catsbi.oopy.io/bf003ff6-2912-4714-8ac2-44eeb7becc93

spotless 적용

ddd-examples/
│
├── README.md                          # 📍 현재 파일 (프로젝트 개요)
├── DDD_ARCHITECTURE.md                # 🏗️ 상세 아키텍처 설명
├── DDD_COMPARISON.md                  # 🔄 Before/After 상세 비교
│
└── src/main/java/.../ddd/
    │
    ├── application/               # 애플리케이션 레이어
    │   ├── event/         
    │   ├── service/  
    │   │   └──OrderService.java   # 애플리케이션 서비스 (조율)
    │   ├── command/               # Command 객체 (입력)
    │   │   ├── CreateOrderCommand.java
    │   │   ├── PayOrderCommand.java
    │   │   ├── CancelOrderCommand.java
    │   │   └── OrderItemCommand.java
    │   ├── dto/                   # Response 객체 (출력)
    │   │   ├── OrderDetailRes.java
    │   │   └── OrderItemRes.java
    │   └── service/               # 외부 도메인 클라이언트
    │       ├── ProductClient.java
    │       ├── CustomerClient.java
    │       └── CouponClient.java
    │
    ├── domain/                    # 도메인 레이어 (핵심)
    │   ├── entity/                # 엔티티
    │   │   ├── Order.java         # 애그리거트 루트
    │   │   └── OrderItem.java     # 엔티티
    │   ├── vo/                    # 값 객체
    │   │   ├── Money.java
    │   │   ├── Quantity.java
    │   │   ├── OrderStatus.java
    │   │   ├── CustomerId.java
    │   │   ├── ProductId.java
    │   │   ├── CouponCode.java
    │   │   └── ShippingAddress.java
    │   ├── service/               # 도메인 서비스
    │   │   └── OrderDomainService.java  # 간단한 비즈니스 로직
    │   ├── event/                 # 도메인 이벤트
    │   │   ├── OrderDomainEvent.java
    │   │   ├── OrderCreatedEvent.java
    │   │   ├── OrderPaidEvent.java
    │   │   └── OrderCancelledEvent.java
    │   └── repository/
    │       └── OrderRepository.java
    │
    ├── infrastructure/             # 인프라 레이어
    │    └── external/              # 외부 도메인 통신
    │        └── dto/               # 외부 도메인 DTO
    │        │   ├── ProductDTO.java
    │        │   ├── CustomerDTO.java
    │        │   └── CouponDTO.java
    │        ├── CouponClientImpl.java         # 외부 도메인 호출 모듈
    │        ├── CustomerClientImpl.java       # 외부 도메인 호출 모듈
    │        └── ProductClientImpl.java        # 외부 도메인 호출 모듈
    │            
    └── presentation/
         ├── dto/  
         └── controller/                # 표현 계층 (Presentation Layer)
             └── OrderController.java   # REST API 컨트롤러