@Controller VS @RestController
전통적인 Spring Framework의 대한 컨트롤로의 대한 선언으로 @Controller를 사용해 왔습니다. 하지만 좀 더 Restful 한 웹 서비스를 기대하면서 Spring 4 이후에 @RestController라는 새로운 어노테이션이 등장하였습니다. 이번 포스팅에서는 이 두 개의 어노테이션에 차이를 알아보도록 하겠습니다.
@Controller VS @RestController 비교하기
@Controller
@ResponseBody
public class Controller { }
@RestController
public class RestController { }
위의 두 개의 컨트롤러의 기능은 동일합니다. 이와 같이 @RestController는 @Controller와 @ResponseBody의 조합과 같은 기능을 하게 됩니다. 기존의 @Controller는 클라이언트의 요청으로부터 ViewResolver에 설정에 맞는 View를 반환하였습니다. 하지만 Restful 한 웹 서비스에서는 컨트롤러에서 데이터를 반환해야 하기 때문에 @ResponseBody 어노테이션을 사용하여 데이터를 반환하였습니다. 이러한 과정을 간단하게 하기 위해 @Controller와 @ResponseBody의 조합인 @RestController를 도입하게 되었습니다.
@Controller | @RestController |
View 반환 가능 | View 반환 불가능 |
모델 객체의 맵을 생성 후 View 반환 | Json, XML로 HTTP 응답에 객체 반환 |
즉, 기존의 @Controller에서 응답 본문으로 객체로 받는 경우에 @ResponseBody를 사용하였고, 이것을 사용하지 않는 컨트롤러는 자동적으로 View를 반환하였다. 하지만 RestFul 한 개발이 요구되면서 @RestController가 등장하였다. 따라서 api의 기능만을 사용한다면 @RestController를 사용해야 할 것이다.
'WEB > Spring' 카테고리의 다른 글
[Spring]스프링 배치(Batch)란? (8) | 2023.02.20 |
---|---|
[Spring]DI와 Autowired 확실히 알고 사용하기 (4) | 2023.01.31 |
[Spring]DTO와 VO의 모호한 사용, 확실하게 사용하기 (7) | 2023.01.30 |
[Spring]@RequestBody와 @RequestParam 비교하여 이해하기 (7) | 2023.01.27 |
[Spring]@RequestParam의 파라미터 사용의 이해 (7) | 2023.01.25 |