Spring MVC (Model-View-Controller)는 Spring Framework에서 제공하는 웹 어플리케이션 개발을 위한 핵심 모듈이다. MVC 패턴을 기반으로 웹 요청을 처리하고, 데이터를 전달하며, View (화면)을 렌더링한다. Spring Boot 어플리케이션은 내부적으로 Spring MVC를 사용해서 웹 요청을 처리한다.

클라이언트가 요청 (Request)를 보내면, Controller가 요청을 받아 로직 (상태 갱신, etc.)를 처리하고 필요한 데이터를 Model에서 가져온다. Controller는 응답 데이터를 View에 전달하고, View는 데이터를 참조하여 화면을 렌더링한 뒤, 최종 응답 (Response)을 클라이언트로 반환한다.
| 컴포넌트 | 역할 | 관련 어노테이션 |
|---|---|---|
| DispatcherServlet (요청/응답 처리) | 모든 HTTP 요청을 받아 적절한 Handler를 호출하고, 처리 결과를 다시 응답으로 변환하는 Front Controller | Spring Boot가 자동으로 등록 |
| HandlerMapping | 요청 URL, HTTP 메서드를 기반으로 어떤 Controller 메서드가 실행되어야 하는지 매핑 | @RequestMapping, @GetMapping, @PostMapping, etc. |
| HandlerAdapter | 선택된 Controller를 실제 실행 가능한 형태로 호출 | Spring 내부 컴포넌트로 직접 어노테이션 없음 |
| Controller | 요청을 받아 비즈니스 로직 처리, 파라미터 바인딩, Model 생성 및 View/데이터 생성 | @Controller (뷰 반환)@RestController (JSON 반환)@ResponseBody@RequestBody |
| HTTPMessageConverter | 요청/응답의 Body(JSON, XML, etc.)를 객체/문자열로 변환 | @RequestBody, @ResponseBody 사용 시 동작Jackson, Gson 등 라이브러리 기반 |
| ViewResolver | Controller가 반환한 View 이름을 실제 View 객체 (Thymeleaf, JSP 등)로 매핑 | @Controller 사용 시 자동 동작 |
| DispatcherServlet (응답 반환) | Controller/MessageConverter가 만든 결과를 가공하여 최종 응답을 클라이언트에 전달 |