다음은 컨트롤러에서 이 프로세스를 구현하는 방법의 예입니다:
java코드 복사
@RestController
@RequestMapping("/orders")
public class OrderController {
private final OrderService orderService;
@Autowired
public OrderController(OrderService orderService) {
this.orderService = orderService;
}
@PostMapping
public ResponseEntity<CreateOrderResponse> createOrder(@RequestBody CreateOrderRequest request) {
// DTO를 Command로 변환
CreateOrderCommand command = new CreateOrderCommand(request.getProductId(), request.getQuantity());
UUID orderId = orderService.createOrder(command);
return ResponseEntity.ok(new CreateOrderResponse(orderId));
}
}
CreateOrderRequest
는 클라이언트로부터 입력 데이터를 받는 데 사용됩니다.CreateOrderCommand
는 createOrder
유스케이스에 필요한 데이터를 캡슐화합니다.컨트롤러에서 DTO를 사용하고 이를 Command 객체로 변환한 후 애플리케이션 레이어로 전달하는 것은 널리 인정받는 관행입니다. 이 접근 방식은 웹 레이어와 비즈니스 로직 간의 명확한 분리를 유지하며, 애플리케이션 아키텍처의 유지보수성과 적응성을 높이는 데 기여합니다 (Baeldung) (Home | JavaInUse) (blog.allegro.tech).