Spring MVC에서 클라이언트의 요청 처리 흐름.(@Controller/@RestController)

2026. 2. 23. 09:42·위클리페이퍼

 

Spring MVC 요청 처리 흐름 핵심 진입점은 DispatcherServlet이다.

@Controller와 @RestController는 동일한 흐름 위에서 동작하지만, 응답을 어떻게 처리하느냐에 차이가 있다.

.

  • Spring MVC 전체 요청 처리 흐름은 다음과 같은 공통 구조를 가진다.
  • HandlerMapping : URL,HTTP Method 기반으로 실행할 Controller 메서드 탐색.
  • HandlerAdapter : 실제 Controller 메서드 실행.
  • Return Value : 여기서 @Controller @RestContoller 갈린다.

@Controller 요청 처리 흐름.

  • View 기반 MVC 패턴
  • 반환값을 View 이름으로 해석

[처리 과정]

  1. Controller 메서드 실행
  2. 메서드가 String 반환 -> View 이름으로 해석
  3. ViewResolver가 실제 View 객체 찾음
  4. View가 HTML 렌더링
  5. 렌더링된 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 사용하지 않는다.

[처리 과정]

  1. Controller 메서드 실행
  2. 반환 객체를 HttpMessageConverter가 JSON등으로 변환
  3. 변환된 데이터가 HTTP Body에 작성
  4. 클라이언트로 전송

[예시 코드]

@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
'위클리페이퍼' 카테고리의 다른 글
  • GitHub Actions Trigger 유형과 CI/CD 활용 시나리오
  • AWS RDS를 활용하는 이점과 EC2에 직접 DB 설치 비교
  • Spring boot에서 사용되는 다양한 Bean 등록 방법들
  • 웹 서버와 WAS(Web Application Server)의 차이
과컴
과컴
벡엔드 개발자 최소기준 맞추겠습니다.
  • 과컴
    곽의 프로그램
    과컴
  • 전체
    오늘
    어제
    • 분류 전체보기 (76)
      • 위클리페이퍼 (6)
      • 파이썬 (4)
      • 코드잇 스프린트 (48)
        • Spring 이론 (7)
        • Java이론 (11)
        • 실습 (23)
      • 백엔드 개발자 최소기준 (1)
      • 코딩테스트 (5)
        • 알고리즘 (0)
        • SQL (1)
      • Git (5)
      • 스프링부트 핵심가이드 (1)
      • 트러블 슈팅 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준1075번
    문자열
    백준1152
    파이썬입문
    파이썬기초
    파이썬
    백준2576
    백준브론즈
    혼공파
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
과컴
Spring MVC에서 클라이언트의 요청 처리 흐름.(@Controller/@RestController)
상단으로

티스토리툴바