클라이언트 요청 처리 흐름을 중심으로 Spring MVC에 대해 학습해보자.
✔️ Spring MVC의 클라이언트 요청 처리 흐름
공통적인 Spring MVC 요청 처리 흐름
- DispatcherServlet: 클라이언트의 모든 요청을 받아 중앙에서 제어
- Handler Mapping: 받은 요청 어느 컨트롤러(Handler)가 처리할지 결정
- Handler Adapter: 선택된 컨트롤러의 메소드를 실행할 수 있도록 호출
- Controller: 비즈니스 로직을 수행하고 결과 반환
- View Resolver / Message Converter: 컨트롤러의 반환값에 따라 화면(HTML) 혹은 데이터(JSON/XML)를 생성해 전달
@Controller와 @RestController
둘의 가장 큰 차이는 반환하는 결과값에 있다.
| @Controller | @RestController | |
| 주요 목적 | 전통적인 웹 페이지(HTML) 응답 | REST API(JSON) 응답 |
| 반환값 | View(화면)의 이름 ex. return "home" |
HTTP 응답 본문에 담길 데이터(객체 또는 문자열) ex. return dto |
| 랜더링 처리 | View Resolver을 거침 | Message Converter을 거침 |
| 어노테이션 구성 | @Controller | @Controller + @ResponseBody |
✔️ 정리
Spring MVC에서는 클라이언트의 요청을 처리하고, 응답을 반환하기 위해 여러 구성 요소를 사용한다. 이는 중앙에서 DisptacherServlet에 의해 제어된다.
반환하는 응답의 형식에 따라 @Controller 혹은 @RestController를 사용한다. 사용자에게 보여줄 웹 페이지를 만들어야 한다면 화면 이름을 반환하는 @Controller를, 프론트엔드와 통신하기 위한 순수 데이터를 주고 받아야 한다면 데이터를 반환하는 @RestController를 사용하는 것이 적절하다.
'codeit sprint backend > weekly paper' 카테고리의 다른 글
| [9-2] Transaction: 격리 (0) | 2026.04.01 |
|---|---|
| [9-1] Spring JPA: N+1 문제 (0) | 2026.03.30 |
| [6-1] AOP(Aspect Oriented Programming) (0) | 2026.02.27 |
| [5-2] Spring Boot의 Bean (0) | 2026.02.13 |
| [5-1] 웹 서버 (Web Server) vs WAS (Web Application Server) (0) | 2026.02.13 |