Spring Web MVC는 Spring Framework에서 제공하는 기능 중 하나로, MVC 2 패턴을 지원한다.
Model, View, Controller사이의 의존 관계를 DI 컨테이너에서 관리하여 유연한 웹 어플리케이션을 쉽게 구현 및 개발할 수 있다.
✅ Spring Web MVC에서는 Controller, Service, DAO 계층으로 구성된 MVC 패턴을 따른다.
Model 객체를 반환 
MVC 패턴에도 여러 가지 구조가 있다. 그 중 밑의 그림의 과정을 사용하고 있는 것이 Spring MVC 패턴이다. 어떠한 방식으로 처리되는지 한 번 살펴보자!

1. HTTP Request
클라이언트의 요청이 DispatcherServlet에 도착한다.
2. Handler 조회
HandlerMapping을 통해 클라이언트의 요청을 매핑할 적절한 Handler를 찾는다.
3. 핸들러 실행 (handle)
HandlerAdapter를 실행한다.
HandlerAdapter는 Controller와 DispatcherServlet 간의 통신을 중개하며, DispatcherServlet이 Controller를 호출할 때 기능을 제공한다.
4. Handler 호출
Controller의 핸들러 메서드를 호출한다.
Controller는 비즈니스 로직을 실행하고 Model 객체를 반환한다.
5. ModelAndView 반환
HandlerAdapter는 Handler가 반환하는 정보를 ModelAndView로 변환하여 반환한다.
6. View Resolver 호출
DispatcherServlet은 ViewResolver를 통해 어떤 View를 사용할지 결정한다.
7. View 반환
ViewResolver는 뷰의 이름을 기반으로 해당하는 View 객체를 반환한다.
8. View 렌더링 (render(model))
View는 Model을 사용하여 뷰를 렌더링한다.
9. HTTP Response
렌더링된 결과를 클라이언트에게 응답으로 반환한다.
DispatcherServlet : 클라이언트의 요청을 처리하고 HandlerMapping을 사용해 요청을 적절한 Controller에게 매핑한다. HandlerMapping : 요청에 대해 어떤 Controller가 처리할지 결정한다.Controller : 비즈니스 로직을 처리하고 Model 객체를 반환한다.Model : View에서 사용할 데이터를 저장한다.ViewResolver : Controller가 반환한 Model 객체와 템플릿 파일을 사용해 적절한 View를 찾는다.View : Model을 사용해 클라이언트에게 응답을 반환한다.
위에서 봤던 Spring MVC 패턴과 매칭 시켜보면 이런식으로 매핑이 되는 것이다. 각각의 과정을 고객이 주문하면 이것을 주문 받아 전달하는 과정으로 생각하면 더 쉽게 이해 할 수 있을 것이다.
