WEB/Spring

[Spring]@Controller VS @RestController

MoonSta 2023. 1. 30. 11:56

@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를 사용해야 할 것이다.

https://programmingmaster.co.kr/spring-getmapping%ea%b3%bc-postmapping%ec%9d%98-%ec%b0%a8%ec%9d%b4-%ec%95%8c%ec%95%84%eb%b3%b4%ea%b8%b0/

 

Spring GetMapping과 PostMapping의 차이 알아보기 | 프로그래밍 마스터

이번 포스팅에서는 Spring에서 자주 사용하는 어노테이션인 @GetMapping, @PostMapping에 대해 알아보고 Spring GetMapping과 PostMapping의 차이에 대해 알아보는 시간을 갖도록 하겠습니다.

programmingmaster.co.kr