본문 바로가기
IT/Java

@Controller와 @RestController

by 성준하이 2022. 11. 7.
반응형
결론 먼저 말하면 둘의 차이는 HTTP Response Body가 생성 유무로 나뉜다.
즉 RestController 는 Controller + Response Body 이다.
@Controller
  • 전통적인 Spring MVC의 컨트롤러
  • View 를 사용
  • @ResponseBody를 사용할 경우 View 대신 Controller에서 직접 데이터 리턴 가능
@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

 

 

@Controller(Spring MVC Controller)

 

[controller - view]

Spring MVC Restful 전통적인 Work Flow 

  • 전통적인 Spring MVC Controller인 @Controller는 주로 View를 반환하기 위해 사용
  1. Client는 URI형식으로 웹 서비스에 요청 전송
  2. Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트
  3. Controller가 요청을 처리한 후 응답을 DispatcherServlet으로 반환하고 DispatcherServlet은 View를 사용자에게 반환.

[controller - data]

Spring 3.x MVC Restful Web Service Work Flow 

  • @ResponseBody로 Spring MVC의 컨트롤러에서는 데이터를 반환하기 위해 사용
    1. Client는 URI형식으로 웹 서비스에 요청 전송
    2. Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트
    3. @ResponseBody를 사용하여 Client에게 Json형태로 데이터를 반환.

 

@RestController(Spring Restful Controller)

  • RestController = Spring MVC Controller + @ResponseBody
  • 주용도 : Json/XML형태로 객체 데이터 반환
    1. Client는 URI형식으로 웹 서비스에 요청 전송
    2. Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트
    3. RestController는 해당 요청을 처리하고 데이터를 반환.
반응형

'IT > Java' 카테고리의 다른 글

Java 와 Jakarta  (37) 2022.11.13
이클립스 workspace 저장위치 확인 및 바꾸기  (46) 2022.11.09
POJO 방식  (37) 2022.10.27
@builder annotation  (44) 2022.10.26
Error creating bean with name 'entityManagerFactory'  (28) 2022.10.22

댓글