Spring MVC Framework and REST
Spring의 어노테이션 기반 MVC 프레임 워크는 RESTful 웹 서비스 생성 프로세스를 단순화한다. 전통적인 Spring MVC 컨트롤러와 RESTful 웹 서비스 컨트롤러의 주요 차이점은 http 응답 본문이 생성되는 방식이다. 기존 MVC 컨트롤러는 View 기술에 의존하지만 RESTful 웹 서비스 컨트롤러는 단순히 객체를 반환하고 객체 데이터는 json/xml로 http 응답에 직접 작성된다.
출처 https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/
@RestController
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}
@RestController를 열어보면 @Controller와 @ResponseBody를 포함한다.
Spring 4.0은 @Controller와 @ResponseBody 어노테이션을 추가하는 것 대신에 @RestController를 도입했다. @RestController를 사용하면 컨트롤러 클래스에 더 이상 모든 요청 맵핑 메소드에 @ResponseBody를 추가 할 필요가 없다. @ResponseBody 어노테이션은 기본적으로 활성화되어 있다.
@Controller
클라이언트 요청이 들어오면 ViewResolver를 통해 클라이언트에게 text/html 타입의 응답을 보낸다.
@ResponseBody
응답으로 view말고 data를 반환해야 하는 경우라면 @ResponseBody를 사용하면 된다. 해당 어노테이션은 data를 json형식으로 반환할 수 있다. 클라이언트의 요청이 들어오면 MessageConverter를 통해 application/json이나 text/plain 등 알맞은 형태로 리턴한다.
'Dev' 카테고리의 다른 글
[JPA] 낙관적인 락과 비관적인 락 간단 정리 (0) | 2020.02.11 |
---|---|
[Spring Boot] Transaction Propagation and Isolation 에 대한 정리 (0) | 2019.12.24 |
[slf4j] msg VS argArray (0) | 2019.12.10 |
[Spring Boot] @SpringBootApplication (0) | 2019.12.09 |
[git] remote: Invalid username or password. fatal: Authentication failed (0) | 2019.03.21 |