Spring MVC에서 Controller vs RestController

심민혁·2025년 3월 30일

weeklypaper

목록 보기
9/18

>2025.03.24위클리 페이퍼

Spring MVC에서 클라이언트의 요청 처리 흐름을 @Controller와 @RestController의 차이점을 중심으로 각각의 처리 과정과 특징을 포함하여 설명하세오.

1. Spring MVC 요청 처리 흐름

1.1 DispatcherServlet

  • 클라이언트의 모든 요청을 가장 먼저 받습니다.
  • 요청 URL을 분석하여, 핸들러 매핑(Handler Mapping)을 통해 해당 요청을 처리할 컨트롤러(@Controller, @RestController)를 찾습니다.

1.2 Handler Mapping

  • 클라이언트 요청 URL을 기반으로 이를 처리할 컨트롤러의 메서드를 찾고 연결합니다.

1.3 Controller

  • 요청을 받은 컨트롤러의 메서드가 실행됩니다.
  • 요청 데이터를 처리하고, 응답할 데이터를 준비합니다.

1.4 ModelAndView반환

  • 결과를 뷰에 전달할 데이터와 화면을 지정하여 반환합니다.
  • 직접 데이터만 반환하기도 합니다.

1.5 ViewResolver

  • Controller의 경우 ModelAndView의 뷰 이름을 실제 JSP,Thymeleaf 같은 View 템플릿과 연결합니다.
  • 렌더링된 최종 View를 통해 HTML응답을 클라이언트에 전달합니다.

1.6 HttpMessageConverter

  • RestController의 경우 객체를 JSON 또는 XML과 같은 데이터 형식으로 변환해 클라이언트에 전달합니다.

2. @Controller의 흐름 및 특징

2.1 Controller의 흐름

  1. DispatcherServlet (요청 수신)
  2. HandlerMapping (URL과 컨트롤러 메서드 매핑)
  3. @Controller 실행 (비즈니스 로직 처리)
  4. ModelAndView (뷰 이름과 데이터 반환)
  5. ViewResolver (뷰 이름을 실제 뷰 파일과 연결)
  6. View 렌더링 후 HTML 응답

2.2 Controller의 특징

  • 주로 View를 반환하는 컨트롤러입니다.
  • 요청 처리 후 DispatcherServlet은 뷰 이름을 ViewResolver로 넘겨 실제 화면을 랜더링합니다.

3. @RestController의 흐름 및 특징

3.1 RestController의 흐름

  1. DispatcherServlet (요청 수신)
  2. HandlerMapping (URL과 컨트롤러 메서드 매핑)
  3. @RestController 실행 (비즈니스 로직 처리)
  4. 응답 객체 반환
  5. HttpMessageConverter (객체를 JSON/XML로 변환)
  6. 데이터(JSON/XML) 응답

3.2 RestController의 특징

  • 주로 REST API로 데이터를 반환하는 컨트롤러입니다.
  • 내부적으로 @Controller와 @ResponseBody어노테이션이 결합된 형태입니다.
  • 응답 객체를 직접 반환하면 자동으로 JSON, XML 형태로 변환하여 응답합니다.
  • 뷰 템플릿이나 ViewResolver를 사용하지 않습니다.

요약 :

@Controller는 View,
@RestController는 데이터를 제공할때 사용된다.

profile
열심히 하고 싶습니다

0개의 댓글