@Controller, @RestController
Spring MVC에서 @RestContrller 어노테이션은 @Controller에 @ResponseBody가 추가된 형태입니다. 스프링 4.0 버전에 등장했으며, RESTful 웹 서비스를 개발하기 위해서 만들어졌습니다.
일반적인 웹 어플리케이션은 HTML + CSS + JavaScript의 조합으로 화면을 구성하지만, REST API는 JSON 혹은 XML 형태로 데이터를 반환합니다. @Controller의 역할은 Map 형태의 모델 객체를 만들고 뷰를 찾는 것이고, @RestController는 단순하게 객체를 반환하고, 객체 데이터는 직접적으로 JSON 혹은 XML 형태로 HTTP 응답에 직접 기록됩니다.
Controller는 적절한 view를 선택하고 view에 보여지는 데이터 모델 맵을 준비하는데 책임을 가지는 클래스입니다. @Controller에 @ResponseBody를 추가하면, 응답에 직접적으로 기록할 수 있습니다
@RestController는 응답에 직접적으로 기록하는 행위로 RESTful 웹 서비스에 응답할 때 굉장히 유용한데, 왜냐하면 뷰를 반환하는 대신에 단순하게 데이터만 반환하기 때문입니다.
차이점 정리
1. @Controller는 Spring MVC의 Controller로 표시하기 위해 사용되었지만, @RestController는 RESTFul 웹 서비스에서 사용되며 @Controller + @ResponseBody로 구성되어 있습니다
2. @RestController는 스프링 4.0 버전에서 추가되었지만, @Controller는 스프링의 시작부터 함께 했습니다
3. @Controller는 @Component의 세부 항목이지만, @RestController는 @Controller의 세부항목입니다
4. @RestController를 사용한 클래스는 모든 메서드가 뷰 대신에 도메인 객체로 작성됩니다.
* 출처
'Spring' 카테고리의 다른 글
스프링 트랜잭션 이해 (0) | 2022.12.01 |
---|---|
트랜잭션의 역사 (0) | 2022.09.04 |
@Controller, @Service, @Repository 차이 (0) | 2022.08.25 |
DI(Dependency Injection) (0) | 2022.07.14 |
Servlet (0) | 2022.07.11 |