Spring Framework/끄적끄적

[Spring] 스프링 @Controller 와 @RestController 차이

포포015 2021. 3. 7. 11:27
  • 주요한 차이점 : HTTP Response Body가 생성되는 방식

@Controller

  • 전통적인 Spring MVC의 컨트롤러
  • View 기술사용
  • @ResponseBody를 사용하면 View를 리턴하지 않고 Controller에서 직접 데이터 리턴 가능

Spring4.0부터 @RestController를 통해 더 단순화 되었다.

 

@RestController

  • Restful 웹서비스의 컨트롤러
  • 반환 되는 객체 데이터 타입 : JSON/XML 타입의 HTTP 응답을 직접 리턴

 

@Controller의 실행 흐름

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client

@ResponseBody의 실행 흐름

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller (ResponseBody) -> Response -> Client

@RestController의 실행 흐름

Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController (자동 ResponseBody 추가) -> HTTP Response -> Client