Skip to content

Latest commit

 

History

History
39 lines (29 loc) · 1.88 KB

01_Controller_and_RestController.md

File metadata and controls

39 lines (29 loc) · 1.88 KB

@Controller and @RestController


@Controller

1. Controller로 View return 하기

  • 전통적인 Spring MVC controller
  • 주로 View 를 반환하기 위해 사용
    • ViewName을 반환한다!
  • Controller가 반환한 ViewName 으로부터 View를 rendering 하기 위해서 ViewResolver 가 사용된다
    • ViewResolver 설정에 맞게 View 를 찾아 rendering 한다

2. Controller로 Data return 하기

  • View가 아닌, Data를 return 해야 하는 경우, Data 반환을 위해 @ResponseBody annotation을 사용해야 한다
    • @ResponseBody annotation을 통해 Controller도 JSON 형태로 Data를 return 할 수 있다!
    • Return 되는 객체는 JSON으로 Serialize 되어 사용자에게 반환된다
  • Controller를 통해 객체를 반환할 때에는 일반적으로 ResponseEntity 로 감싸서 반환한다
    • 객체를 반환하기 위해서는 ViewResolver 대신에 HttpMessageConverter 가 동작한다
    • HttpMessageConverter 에는 여러 Converter가 등록되어 있고, Return 해야하는 data에 따라 사용되는 Converter가 달라진다
      • 문자열의 경우 StringHttpMessageConverter
      • 객체의 경우 MappingJackson2HttpMessageConverter
  • 스프링은 Client의 Http Accept header 와 Server의 Controller return type 정보를 조합해 적합한 HttpMessageConverter 를 선택하여 이를 처리한다

@RestController

  • Restful web service controller
  • @Controller@ResponseBody 가 추가된 것
    • HTTP Response Body 가 생성된다
    • 동작 방식 역시 @Controller@ResponseBody 를 붙인 것과 완벽히 동일하다!
    • method 마다 @ResponseBody 선언했던 것을 한번에 사용할 수 있게 한다
  • 주 용도는 JSON 형태로 객체 data를 반환하는 것!
  • REST API를 개발할 때 주로 사용하며, 객체를 ResponseEntity 로 감싸서 반환한다