Spring MVC의 핵심, DispatcherServlet이란?
Spring MVC에서 웹 요청이 들어왔을 때 가장 먼저 마주치는 존재가 있습니다. 바로 DispatcherServlet입니다. 이 글에서는 DispatcherServlet이 무엇인지, 어떻게 동작하는지, 어떤 역할을 하는지 차근차근 설명해보겠습니다.
✅ DispatcherServlet이란?
DispatcherServlet은 Spring MVC의 Front Controller 역할을 하는 서블릿입니다.
- DispatcherServlet은 Spring Boot의 Spring MVC에서 자동으로 등록되는 서블릿입니다.
웹 요청이 들어왔을 때 가장 먼저 요청을 받아, 어떤 컨트롤러로 넘길지 판단하고, 결과를 가공해 응답을 보내는 역할을 합니다. - 즉, Spring Boot 백엔드에서 API 요청을 처리하는 중심 허브입니다.
사용자 → React → Axios/Fetch 요청
↓
[Spring Boot 서버]
↓
DispatcherServlet
↓
컨트롤러(@RestController)
↓
서비스 / DB 처리
↓
JSON 응답
↓
React 화면에 렌더링
✅ 실제 API 요청 예시
React에서 사용자 목록을 가져오는 API를 호출한다고 가정해보겠습니다.
useEffect(() => {
axios.get("http://localhost:8080/api/users")
.then(res => setUsers(res.data))
.catch(err => console.error(err));
}, []);
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<UserDto> getUsers() {
return userService.findAll();
}
}
👉 이 요청의 백엔드 처리 흐름
- React가 GET /api/users 요청을 보냄
- DispatcherServlet이 이 요청을 받음
- HandlerMapping이 UserController의 getUsers() 메서드를 찾아줌
- 해당 메서드 실행 → 서비스/DB에서 사용자 목록을 가져옴
- 결과(List<UserDto>)를 JSON으로 변환하여 클라이언트에 응답
| 요청 수신 | React가 보내는 모든 HTTP 요청을 받는다 |
| 매핑 처리 | 어떤 Controller 메서드가 요청을 처리할지 판단 |
| 로직 연결 | 해당 Controller 메서드를 실행 |
| 응답 변환 | 반환값을 JSON 등으로 변환하여 프론트에 전달 |
🔍 DispatcherServlet을 왜 써야 할까?
Spring은 왜 DispatcherServlet이라는 중간 관리를 두었을까?
✅ 1. Front Controller 패턴 구현
- 웹 애플리케이션의 모든 요청을 하나의 진입점에서 받아 처리함으로써,
공통 기능(인증, 로깅, 예외처리 등)을 중앙 집중화할 수 있습니다. - 개발자 입장에서 Controller 로직에만 집중할 수 있게 도와줍니다.
✅ 2. 유연한 구조 지원
- 다양한 요청을 URL, 메서드(GET, POST 등), 파라미터 등으로 매핑 가능.
- 다양한 View 처리도 가능 (JSP, Thymeleaf, JSON, XML 등)
👉 DispatcherServlet의 역할은?
- /api/users 요청을 받자마자 DispatcherServlet이 처리
- 적절한 컨트롤러 연결 → 서비스 → JSON 응답
'Spring' 카테고리의 다른 글
| [Spring] RESTFULL API 에 대한 생각 정리 (1) | 2025.07.16 |
|---|---|
| Spring Bean이란 무엇이며, 어떻게 정의할까? (0) | 2025.06.15 |
| MyBatis 란 무엇일까? (1) | 2025.06.13 |
| Spring 과 SpringBoot의 차이 (1) | 2025.06.11 |
| @Component, @Service, @Repository, @Controller 어노테이션의 차이점 (1) | 2025.06.09 |