본문 바로가기

Programming/Spring

[Spring] @Controller와 @RestController의 차이

@Controller

주로 MVC에서 View를 반환할 때 사용한다.

ResponseBody 어노테이션을 통해 HTTP Response Body에 데이터를 담아 사용할 수도 있다. (이렇게 사용할 경우 View를 리턴하지 않고 Controller에서 직접 데이터 리턴이 가능하다)

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

 

 

 

@ResponseBody

자바 객체를 HTTP 응답 본문의 객체로 변환하여 클라이언트에게 전송할 때 사용한다.

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

 

 

 

@RestController

RESTful 웹 서비스에서 사용하는 특수 컨트롤러이다.

@Controller + @ResponseBody

Json/XML 형태의 객체 데이터를 직접 리턴한다.

Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController -> HTTP Response -> Client

 

 

 

 

 

reference

     -  Spring Boot 구조 정리

        https://devham76.github.io/spring/Spring-controllerRestController/

     -  [Spring] @Controller와 @RestController 차이

        https://mangkyu.tistory.com/49