@Controller
controller - view
- 전통적인 spring MVC 컨트롤러.
- View를 반환하기 위해 사용
- client는 URI 형식으로 웹서비스에 요청을 보낸다.
- Mapping 되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트(가로채기) 한다.
- Controller가 client 요청을 처리 후에 응답은 DispatcherServlet으로 반환하고, DistpatcherServlet은 View를 사용자에 반환한다.
- @Controller가 View를 반환하기 위해서는 ViewResolver가 사용되며, ViewResolver가 설정에 맞게 View를 찾아 랜더링 한다.
controller - Data
- 단순히 view를 처리함과는 다르게 요청한 Data를 반환 하는 경우가 존재한다.
- springMvc 컨트롤러에서 데이터를 반환하기 위해 @ResponseBody 를 활용해야 한다.
- 이를 통해 Controller에서 JSON형태의 데이터로 반환이 가능하다.
- client는 URI 형식으로 웹 서비스에 요청을 보낸다.
- Mapping되는 Handler와 그 type을 찾는 DispatcherServlet이 요청을 인터셉트 한다.
- @ResponseBody를 사용하여 Client에게 Json형태로 데이터를 반환한다.
※ 💡PLUS
- @RestController가 Data를 반환하기 위해서는 viewResolver 대신에 httpMessageConverter가 동작한다.
- HttpMessageConverter에는 여러 Converter가 등록되어 있고, 반환해야 하는 데이터에 따라 사용되는 Converter가 달라진다.
- 단순 문자열인 경우 StringHttpMessageConverter가 사용된다.
- 객체 인 경우 MappingJackson2HttpMessageConverter가 사용된다.
- 데이터의 종류에 따라 서로 다른 MessageConverter가 작동하게 된다.
- spring은 클라이언트의 HTTP Accept헤더와 서버의 컨트롤러 반환 타입 정보들을 조합해 적합한 HttpMessageConverter를 선택하여 이를 처리한다.
@RestController(spring Restful Controller)
- client URI 형식으로 웹 서비스에 요청을 보낸다.
- Mapping 되는 Handler와 그 type을 찾는 DispatcherServlet이 요청을 인터셉트한다.
- RestController는 해당 요청을 처리하고 데이터를 반환한다.
댓글