외부 시스템으로부터 주문 데이터를 가져와 메모리에 저장하고
저장한 데이터를 외부 시스템으로 전송하는 기능을 구현한
Spring Boot 기반 주문 관리 시스템
- 주문 저장 / 주문 단건 조회 / 주문 목록 조회
- 외부 주문 data 저장 / 외부 주문 data 전송
| Class/Interface | 역할 |
|---|---|
OrderController |
주문 저장, 조회, 외부 데이터 연동 요청을 처리하는 REST API Contoller |
OrderService / OrderServiceImpl |
주문 저장, 조회, 외부 데이터 저장 및 전송 등 비즈니스 로직 처리 |
OrderRepository / MemoryOrderRepository |
주문 데이터 메모리 저장 및 조회 (ConcurrentHashMap) |
OrderClient / RestClientOrderClient |
RestClient를 사용하여 외부 시스템과 데이터 연동을 담당하는 인터페이스 |
OrderMapper |
DTO와 도메인 모델 간의 변환 처리 (MapStruct) |
OrderSave / OrderRes |
클라이언트로부터 입력받거나 응답으로 전달되는 DTO (요청/응답 데이터 구분) |
Order |
실제 주문 정보를 담는 도메인 객체 |
OrderExceptionHandler |
예외 발생 시 HTTP 응답 처리 (유효성 검사 실패, 주문 미존재, 시스템 오류) |
- Java 17
- Spring Boot 3.5.3
- Spring Web
- Spring Validation
- MapStruct
- RestClient
- JUnit 5
- MockMvc / Mockito
- Gradle
- IntelliJ IDEA
- Project clone 또는 Download Zips
- Project 실행 후 Postman으로 테스트 또는 OrderServiceApplicationTests 실행
1. 주문 등록 (POST /order)
- Request (JSON) -orderId는 자동 생성되므로 제외
{ "cusNm": "주문자", "orderDt": "20250718", "orderSt": "ST0001" } - Response
Saved Order: OrderSave(cusNm=주문자, orderDt=20250718, orderSt=ST0001)
2. 주문 전체 조회 (GET /order)
- Response
[ { "orderId": "OID-xxxxxxxx", "cusNm": "주문자", "orderDt": "20250718", "orderSt": "ST0001" } ]
3. 주문 단건 조회 (GET /order/{orderId})
- 주문 저장 시 생성된 orderId로 조회
- Response
성공 - { "orderId": "OID-xxxxxxxx", "cusNm": "주문자", "orderDt": "20250718", "orderSt": "ST0001" }
실패 - Order ID [ OID-xxx ] not found
📍 아래는 외부 시스템 url 설정 후 가능(현재 임시로 https://test.com 사용)
4. 외부 시스템 주문 저장 (GET /order/client)
- Response
성공 - save success
실패 - SERVER_ERROR: save failed
5. 외부 시스템 주문 전송 (POST /order/client)
- Response
성공 - send success
실패 - SERVER_ERROR: send failed