컨트롤러

kan의 개발 블로그·2023년 2월 1일
0

Spring 세계

목록 보기
10/10

스프링에서 컨트롤러를 지정해주기 위한 어노테이션은
@Controller 와 @RestController 가 있습니다.

@Controller

전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다.

Controller로 View 반환하기

1. Client는 URI 형식으로 웹 서비스에 요청을 보냅니다.
2. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾습니다.
3. HandlerMapping을 통해 요청을 Controller로 위임합니다.
4. Controller는 요청을 처리한 후에 ViewName을 반환합니다.
5. DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 사용자에게 반환한다.
  • 컨트롤러를 통해 객체를 반환할 때에는 일반적으로 ResponseEntity로 감싸서 반환을 합니다.
  • 객체를 반환하기 위해서는 viewResolver 대신에 HttpMessageConverter가 동작합니다.
  • HttpMessageConverter에는 여러 Converter가 등록되어 있고, 반환해야 하는 데이터에 따라 사용되는 Converter가 달라집니다.
    - StringHttpMessageConverter : 단순 문자열인 경우에 사용
    • MappingJackson2HttpMessageConverter : 객체인 경우에 사용
      이와 같이 데이터 종류에 따라 서로 다른 MessageConverter가 작동하게 됩니다.
  • Spring은 클라이언트의 Http Accept 헤더와 서버의 컨트롤러 반환 타입 정보를 조합해 적합한 HttpMessageConverter를 선택하여 이를 처리합니다.
  • MessageConverter가 동작하는 시점은 HandlerAdapter와 Controller가 요청을 주고 받는 시점입니다.

@RestController

@RestController는 @Controller에 @ResponseBody가 추가된 것입니다.
@RestController의 주된 용도는 Json 형태로 객체 데이터를 반환하는 것입니다.

데이터를 응답으로 제공하는 REST API를 개발할 때 주로 사용하며 객체를 ResponseEntity로 감싸서 반환합니다.

1. Client는 URI 형식으로 웹 서비스에 요청을 보낸다.
2. DispatcherService이 요청을 위임할 HandlerMapping을 찾는다.
3. HandlerMapping을 통해 요청을 Controller로 위임히낟.
4. Controller는 요청을 처리한 후에 객체를 반환한다.
5. 반환되는 객체는 Json으로 Serialize되어 사용자에게 반환된다.

참고 사이트

https://mangkyu.tistory.com/49

profile
개발을 하며 쌓이는 지식과 경험을 정리하고 있습니다.

0개의 댓글