프레임워크/Spring

[Spring] @Controller와 @RestController의 차이

멍토 2021. 4. 7.

초기에는 Spring이 프론트와 백엔드의 역할을 같이하고 있었다.

그래서 @Controller는 화면에 보여주는 View를 반환하는 기능을 가지고 있었다.

그렇지만 Data만 반환을 해야하는 경우가 점차 많이 생기게 되었다.

(RestApi 서버인경우, 화면의 특정 부분만 렌더링 할 경우 등이 있다.)

 

이럴때는 데이터를 반환하기 위해 @ResponseBody를 이용하여 Json 형태로 데이터를 반환한다.

그런데 계속해서 @ResponseBody를 붙이는 것에 대한 불편함이 생겼고 이에따라 이걸 합친 기능이 만들어지게 된다. 이것이 바로 @RestController이다.(Spring 4버전 이후로 출시되었다고 한다.)

즉 @RestController = @Controller + @ResponseBody가 되는 것이다.

 

Json으로의 변환은 Message Converter가 도와준다.

기본적으로 반환이 Json이기 때문에 반환타입을 지정하는 produces에 `application/json` 설정을 추가하지 않아도 된다. (무지성으로 넣으면서 했다가 넣을 이유가 있냐는 피드백을 받았다. ㅜㅠ)

 

출처 : https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-controller

https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-responsebody

https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#rest-message-conversion

댓글

💲 광고입니다.