본문 바로가기
Spring

@Controller @RestContrller

코동이 2022. 8. 25.

@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의 세부항목입니다

Controller



 

RestController

 

4. @RestController를 사용한 클래스는 모든 메서드가 뷰 대신에 도메인 객체로 작성됩니다.

 

* 출처

https://www.javacodegeeks.com/2017/08/difference-restcontroller-controller-annotation-spring-mvc-rest.html

반응형

'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