스프링을 사용할 때 스프링 MVC 흐름에 따라 코딩하는데 @Controller를 사용할 때도 있고 @RestController를 사용할 때가 있습니다. 이번 포스팅에서는 언제 @Controller를 사용하고 @RestController를 사용하는지 스프링 MVC 흐름과 함께 알아보겠습니다.

@Controller

Spring MVC의 컨트롤러는 View를 반환하기 위해 사용합니다. Client의 요청을 받아 View를 반환합니다. Spring MVC의 흐름은 아래와 같습니다:

  1. Client는 URI 형식으로 웹 서비스에 요청
  2. DispatcherServlet은 HandlerMapping에 요청 위임
  3. HandlerMapping을 통해 요청을 Controller로 위임
  4. Controller는 요청을 처리한 후에 ViewName을 반환
  5. DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 클라이언트에게 반환

View를 반환하기 때문에 데이터를 보낼 때는 @RequestBody 어노테이션을 붙여서 Json 형태로 반환해줍니다.

 

@RestController

  • @Controller에 @ResponseBody가 추가된 어노테이션입니다.
  • Json 형태로 객체 데이터를 반환합니다. 
  • @RequestBody를 사용할 필요가 없습니다.
  • REST API 를 개발할 때 주로 사용합니다.

데이터 형식으로 보내는지 반환할 view가 있는지 등을 생각해서 @RestController를 쓸지 @Controller를 사용할 지 선택하고 필요에 따라 @RequestBody를 붙여주면 되겠습니다.

 

 

 

+ Recent posts