[Spring] Restful한 스프링 @ResponseBody vs @RestController
Spring 에서 restful 하게 작성하기 위해 @Controller 내에 @ResponseBody 사용하거나 혹은 @RestController 을 사용할 수 있습니다.
스프링 MVC 프레임 워크와 REST
일반적인 Spring MVC 컨트롤러와 RESTful 웹 서비스 컨트롤러의 주요 차이점은 HTTP 응답 바디가 생성되는 방식이다. 일반적인 MVC 컨트롤러는 View 기술을 사용하지만, RESTful 웹 서비스 컨트롤러는 객체를 반환하기 만하면(!) 객체 데이터는 JSON / XML 형식의 HTTP 응답에 직접 작성되게 됩니다.
▲ 일반적인 Spring MVC 흐름
@ResponseBody 와 @RestController 두가지 차이점을 알아보기 전에 우선 스프링에서 REST하게 데이터가 송수신 되는 과정은 다음과 같다.
- 클라이언트에서 웹서비스에 요청을 보냄.
- Handler Mapping과 그 타입을 찾는 Dispatcher Servlet에 의해 요청이 가로채짐.
- 요청은 Controller에 의해 처리되고 응답은 Dispatcher Servlet으로 반환되고 Dispatcher Servlet은 다시 View로 보내게 됩니다.
@RestController
Spring 4.0은 @Controller와 @ResponseBody 을 합쳐놓은것 이상의 역할을 수행하는@RestController를 추가했습니다. 컨트롤러 클래스에 @RestController 어노테이션을 작성함으로써 더 이상 @ResponseBody를 모든 요청 매핑 메소드에 추가 할 필요가 없습니다. @ResponseBody 어노테이션은 이제 기본으로 작동..!
결론
스프링을 restful하게 만들 때, 앞으로는 스프링 4.0 부터 추가된 @RestController을 활용하므로써 기존의 @ResponseBody in @Controller 방식을 벗어나 좀 더 쉽게 restful한 코드를 작성할 수 있습니다.
각각의 예제는 다음 시간에 올려드리겠습니다. 그럼 이만 :)
'HighCode > Java' 카테고리의 다른 글
| [Spring:Error] The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path (0) | 2016.12.21 |
|---|---|
| [JSTL] Map에 있는 elements들을 원하는 순서대로 출력 (0) | 2016.12.21 |
| [Spring] Restful한 스프링 @ResponseBody vs @RestController (1) | 2016.12.21 |
| 프알못을 위한 Java 04. 조건문 if 와 switch (0) | 2016.09.27 |
| [TIP] 정규표현식(Pattern Matching) 완전 정리! (6) | 2016.09.22 |
| [TIP] 두 날짜 사이의 차이 계산하기 (1) | 2016.09.21 |
2017.03.03 15:33
오 깔끔한 정리 감사드려요