Spring MVC 요청 처리 흐름 핵심 진입점은 DispatcherServlet이다.
@Controller와 @RestController는 동일한 흐름 위에서 동작하지만, 응답을 어떻게 처리하느냐에 차이가 있다.
.

- Spring MVC 전체 요청 처리 흐름은 다음과 같은 공통 구조를 가진다.
- HandlerMapping : URL,HTTP Method 기반으로 실행할 Controller 메서드 탐색.
- HandlerAdapter : 실제 Controller 메서드 실행.
- Return Value : 여기서 @Controller @RestContoller 갈린다.
@Controller 요청 처리 흐름.
- View 기반 MVC 패턴
- 반환값을 View 이름으로 해석
[처리 과정]
- Controller 메서드 실행
- 메서드가 String 반환 -> View 이름으로 해석
- ViewResolver가 실제 View 객체 찾음
- View가 HTML 렌더링
- 렌더링된 HTML을 클라이언트로 반환.
[예제코드]
@Controller
public class UserController {
@GetMapping("/users")
public String userList(Model model) {
model.addAttribute("users", userService.findAll());
return "user-list"; // view name
}
}
return "user-list"
↓
ViewResolver
↓
templates/user-list.html
↓
HTML 렌더링
↓
Client
- 반환값은 논리적 View 이름.
- ViewResolver가 필수.
- Model 객체를 통해 데이터 전달.
- HTML 응답 생성
@RestController 요청 처리 흐름
- @Controller + @ResponseBody 조합
- 반환값을 HTTP Body에 직접 직렬화.
- ViewResolver 사용하지 않는다.
[처리 과정]
- Controller 메서드 실행
- 반환 객체를 HttpMessageConverter가 JSON등으로 변환
- 변환된 데이터가 HTTP Body에 작성
- 클라이언트로 전송
[예시 코드]
@RestController
@RequestMapping("/api/users")
public class UserApiController {
@GetMapping
public List<User> findAll() {
return userService.findAll();
}
}
return List<User>
↓
HttpMessageConverter (Jackson)
↓
JSON 변환
↓
HTTP Body
↓
Client
- ViewResolver 사용 x
- 반환 객체 -> JSON 자동 변환
[정리]
Spring MVC는 DispatcherServlet을 중심으로 요청을 처리하며,
@Controller는 ViewResolver를 통해 View를 렌더링하는 전통적 MVC 방식이고,
@RestController는 HttpMessageConverter를 통해 반환 객체를 JSON 등으로 직렬화하여 HTTP Body로 직접 응답하는 REST 방식이다.
'위클리페이퍼' 카테고리의 다른 글
| GitHub Actions Trigger 유형과 CI/CD 활용 시나리오 (0) | 2026.05.15 |
|---|---|
| AWS RDS를 활용하는 이점과 EC2에 직접 DB 설치 비교 (0) | 2026.05.12 |
| Spring boot에서 사용되는 다양한 Bean 등록 방법들 (0) | 2026.02.06 |
| 웹 서버와 WAS(Web Application Server)의 차이 (0) | 2026.02.02 |
| 프레임워크와 라이브러리의 차이점? (0) | 2026.01.27 |