Spring/Spring-detail
@Controller 와 @RestController 의 원리
YoonJong
2022. 10. 13. 22:13
728x90
@Controller
해당 어노테이션의 목적은 Model 객체를 만들어 데이터를 담고 view를 반환하기 위함이다.
아래와 같은 과정으로 요청과 응답이 진행된다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller
- 클라이언트에서 uri 형식을 통해 요청을 보낸다.
- DisPathcherServlet 에서 해당 요청을 받아 HandlerMapping 을 통해 위임할 Controller를 찾는다.
- Controller 에서는 비즈니스 로직을 진행하여 데이터를 받는다.
- HandlerAdapter는 View Name을 받아 DispatcherServlet 에게 전달하며 ViewResolver 를 통해 해당 하는 View 를 찾아 사용자에게 반환한다.
@RestController
@Controller + @ResponseBody 를 합친것과 같다.
해당 어노테이션은 Json 형태로 객체 데이터를 반환하기 위해 사용한다.
REST API 를 개발할 때 주로 사용하며, ResponseEntity로 감싸서 반환한다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController
- 클라이언트에서 uri 형식을 통해 요청을 보낸다.
- DisPathcherServlet 에서 해당 요청을 받아 HandlerMapping 을 통해 위임할 Controller를 찾는다.
- Controller 에서는 비즈니스 로직을 진행하여 데이터를 받는다.
- HandlerAdapter는 객체를 받아 HandlerAdapter 에게 반환한다.
- HandlerAdapter 내부에서 MassageConvert에 의해 변환되어 DispatchServlet에게 전달되고, 이후 사용자에게 반환한다.
참고
https://mangkyu.tistory.com/49?category=761302
https://dncjf64.tistory.com/288
728x90