본문 바로가기
인천일보아카데미/- 학습일지

[학습일지]JAVA교육일지 75일차 (SERVER)⭐

by w1z 2022. 7. 13.

 

 

 

 

controller의 결과를 DispatcherSerlect을 거쳐서 view로 보여주느냐 아니면 Controller에서 직접 json형식의 데이터를 넘겨주느냐의 차이다

Spring MVC는 DispatcherServlet을 거쳐서 viewResolver를 통해 view로 리턴이 되고 RESTful 방식은 DispatcherServlet을 거치지 않고 바로 웹 브라우저로 json의 형태로 리턴이 된다.

 


*Spring MVC 컨트롤러와 REST 컨트롤러의 차이점
 
이 둘의 차이점을 딱 말하자면 바로 HTTP Response Body가 생성되는 방식입니다. 
 
 MVC 컨트롤러는 View 기술을 사용하는 반면 REST 컨트롤러는 객체를 반환하면 객체 데이터가 JSON / XML 형식의 HTTP 응답에 직접 작성됩니다. 모든 경우가 그런것은 아니지만, MVC 컨트롤러는 View를 반환하는 것이고, REST 컨트롤러는 데이터를 반환하는 것이라고 할 수 있습니다. MVC컨트롤러의 경우에도 @ResponseBody 애너테이션을 사용하면 객체를 반환할 수 있긴합니다. 

 

 

전통적인 Spring MVC 컨트롤러

 아래의 이미지를 비교해보면 전통적인 Spring  MVC 컨트롤러는 요청이 들어오면 Dispatcher Servlet에서 공통 처리 작업을 수행하고 컨트롤러에게 작업을 위임하게 됩니다. 이후 컨트롤러는 응답을 Dispatcher Servlet으로 반환하고, Dispatcher Servlet은 View를 클라이언트에게 반환하게 됩니다. 

 

 

Spring 4.x MVC REST 컨트롤러

 반면 REST 컨트롤러의 경우는 Spring MVC 컨트롤러에 @ResponseBody가 결합된 것으로, @RestController는 반환 값에 자동으로 @ResponseBody가 붙게되면서 HTTP 응답 데이터에 Java 객체가 매핑되어 전달되게 됩니다. 이러한 방식은  전통적인 Spring MVC 컨트롤러와는 다르게 컨트롤러에서 직접 데이터를 반환할 수 있게 합니다. 단, @RestController 애노테이션은 Spring 4.x 버전 이상에서부터 사용가능합니다. Spring 3.x 버전에서는 @RestController 대신 @Controller와 @ResponseBody 애너테이션으로 나누어 작성해주어야 합니다. 

 

 

출처: https://cameldev.tistory.com/64 [낙타의 개발일기 - CamelDev:티스토리]