@Controller와 @RestController 차이점

enoch·2022년 10월 21일
0

무엇이 그렇게 다른가?

SpringMVC를 공부할 때 @Controller를 사용했고 SpringBoot를 공부할 때는 @RestController를 사용했다.
이 둘의 차이점은 view와 관련이 있다.
SpringMVC는 view를 사용한다. 때문에 view를 반환할 수 있는 @Controller를 사용한다.

@Controller

@Controller는 View를 반환하기 위해서 주로 사용된다 

@Controller의 실행 흐름
Client -> Request -> Dispatcher Servlet -> Handler Mapping ->
Controller -> View -> Dispatcher Servlet -> Response -> Client 

@RestController

SpringMVC에서도 view를 반환하지 않고 json 형식의 데이터만 반환할 때가 있다.
이 때 @ResponseBody를 사용해서 자바 객체를 HTTP 응답의 Body로 매핑해준다.

Dispatcher Servlet을 거치지 않고 Controller에서 직접 응답을 반환한다.

@ResponseBody의 실행 흐름
Client -> Request -> Dispatcher Servlet -> Handler Mapping ->
Controller (ResponseBody)-> Response -> Client

View와는 완전히 분리된 REST API를 개발할 때 @Controller 어노테이션과 @ResponserBody를 계속 사용할 필요가 없다.

@RestController@Controller + @ResponseBody이다.

@RestController의 실행 흐름
Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping ->
RestController (자동 ResponseBody 추가)-> HTTP Response -> Client

참고
https://yhmane.tistory.com/78
https://lkg3796.tistory.com/58
https://mangkyu.tistory.com/49

profile
🍣 초밥을 사랑하는 백엔드 개발자 입니다 :)

0개의 댓글