JAVA
@Controller와 @RestController의 차이
옥수수수염챠
2020. 7. 9. 09:47
@Controller와 @RestController는 용도의 차이가 있으며, 주요한 차이점은 HTTP Response Body가 생성되는 방식이 다르다.
@Controller는 주로 Model과 View를 전달하는데, 추가적으로 클라이언트에게 Json 형태로 데이터 반환을 원하는 경우 @ResponseBody를 사용한다.
@RestController는 Spring MVC Controller에 @ResponseBody가 추가된 것이므로, 주 용도는 Json/XML형태로 데이터를 반환하는 것이다.
흐름 순서 :
@Controller
Client(Browser) -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client(Browser)
@RestController
Client(browser) -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController(자동 ResponseBody 추가) -> Http Response -> Client(browser)