>Java >java지도 시간 >스프링 MVC 레스토랑

스프링 MVC 레스토랑

DDD
DDD원래의
2024-10-24 04:40:30281검색

Spring MVC가 단순한 프레임워크가 아니라 일종의 레스토랑이라고 상상해 보세요. 레스토랑에 오면(HTTP 요청 보내기) 마법이 시작됩니다. 이것이 Spring MVC 세계에서 일어나는 일입니다.

식당에 들어갑니다 - DispatcherServlet이 경비를 서고 있습니다
Spring MVC 레스토랑에 들어간다고 상상해 보세요. 그런데 테이블에 가기 전에 도어맨 DispatcherServlet이 반갑게 맞아줍니다. 그는 프런트 엔드 책임자를 의인화하고 모든 명령을 관리합니다. HTTP 요청은 도어맨에게 보내는 첫 인사와 같습니다. 맛있는 음식을 원합니다.

Ресторан Spring MVC

DispatcherServlet은 음식 자체를 준비하지 않고 단순히 요청을 원하는 "셰프", 즉 요리를 준비할 컨트롤러에게 전달합니다. 그러나 이에 대해서는 조금 나중에 자세히 설명합니다. 먼저 도어맨이 메뉴를 확인하여 어떤 셰프가 원하는 음식을 준비해줄 수 있는지 확인합니다.

레시피를 찾는 핸들러 - HandlerMapping
당신이 "맛있는 걸 원해요!"라고 말하자마자 도어맨(우리의 용감한 DispatcherServlet)은 즉시 부엌으로 달려가지 않습니다. 아니요, 먼저 그는 가능한 모든 레스토랑 요리와 이를 준비할 수 있는 셰프가 있는 HandlerMapping을 엽니다.

예를 들어 케이크를 요청합니다. 도어맨은 자신의 메모를 보고 John 셰프가 ChefController에서 케이크를 만들고 있음을 발견합니다.

Ресторан Spring MVC

도어맨이 주방으로 주문을 보냅니다 - HandlerAdapter
도어맨이 적합한 요리사를 찾으면 그의 조수인 HandlerAdapter를 사용하여 주문을 포장하고 주방에서 요리사에게 전달합니다. 마치 도어맨이 "존, 손님에게 케이크 만들어 줘, 빨리 와!"라고 속삭이는 것 같습니다.

셰프가 요리를 준비합니다 – 컨트롤러

Ресторан Spring MVC
이제 John 셰프가 그 자리를 맡게 됩니다. 그는 요리를 담당하는 우리의 컨트롤러입니다. 고객의 요청에 따라 다양한 케이크를 만들 수 있습니다. 예를 들어 요청이 GET인 경우 John은 기성품 케이크를 보여주기만 하면 됩니다(냉장고에서 꺼내기). 그리고 요청이 POST라면 아마도 생크림 케이크를 요청했을 것이고 John은 요리를 시작할 것입니다.

예:

@GetMapping("/cakes")
공개 목록 getCakes() {
return List.of("나폴레옹", "티라미수", "치즈케이크");
}
주저하지 않고 바로 케이크 리스트를 나눠주는 셰프!

접시 장식 - ViewResolver
요리가 준비되면 아름답게 선보여야 합니다. 이것이 ViewResolver가 작동하는 곳입니다. 그는 접시 디자이너와 같습니다. 그는 요리가 고객에게 어떤 형태로 제공될지 결정합니다. 재료만 잔뜩 보고 싶지 않고, 아름답게 장식된 케이크를 원하신다면!

ViewResolver는 케이크를 황금 접시(JSP)에 담아야 하는지 또는 주문한 경우 상자(JSON)에 담아야 하는지 결정할 수 있습니다.

짜잔! Dish on your table - HTTP 응답
마지막으로 요리가 준비되어 제공됩니다. 귀하의 클라이언트(브라우저)가 레스토랑으로부터 응답을 받습니다. 주문에 따라 케이크가 포함된 HTML 페이지일 수도 있고 테이크아웃 앱을 통해 주문한 경우 JSON 개체일 수도 있습니다.

예를 들어 John 셰프는 JSON으로 케이크 목록을 제출하기로 결정했습니다.

@GetMapping("/cakes")
@ResponseBody
공개 목록 getCakes() {
return List.of("티라미수", "나폴레옹", "에클레어");
}
고객은 케이크와 함께 JSON을 받고 삶이 좋아졌습니다!

무슨 일이 생기면 어쩌지? — 예외 처리

Ресторан Spring MVC
여느 레스토랑과 마찬가지로 가끔 일이 잘못될 때도 있습니다. 예를 들어, John 셰프가 갑자기 케이크를 바닥에 떨어뜨렸습니다! Spring MVC 세계에서 이는 예외(예: 요청을 처리할 수 없음)와 동일합니다.

하지만 걱정하지 마세요. Spring Restaurant에는 ExceptionHandler라는 특별한 웨이터가 있어 신속하게 응답하고 사과하거나 새로운 주문을 가져다 줄 것입니다.

@ExceptionHandler(NoCakesAvailableException.class)
공개 ResponseEntity handlerNoCakes(NoCakesAvailableException e){
return new ResponseEntity<>("죄송합니다. 케이크가 다 나왔습니다!", HttpStatus.NOT_FOUND);
}
이렇게 하면 갑자기 케이크가 없으면 다 끝났다고 말하고 용서를 구하게 될 거예요.

결론
이제 당신은 Spring MVC가 명확하게 구조화된 서비스 시스템을 갖춘 레스토랑과 같다는 것을 이해했습니다. 여기에서는 도어맨(DispatcherServlet)이 주문을 받고, 요리를 준비(요청 처리)할 적합한 셰프(컨트롤러)를 찾고, 웨이터(HandlerAdapter 및 ViewResolver)가 결과를 아름답게 전달합니다. 문제가 발생하더라도 ExceptionHandler는 항상 백업할 준비가 되어 있습니다.

위 내용은 스프링 MVC 레스토랑의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.