JavaProject/Spring Boot

@Controller와 @RestController 차이

devel0per 2023. 1. 10. 21:53

1. @Controller 는 무엇일까요?


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

 

[ Controller로 View 반환하기 ]

1. Client는 URL 형식으로 웹 서비스에 요청을 보낸다.

2. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾는다.

3. HandlerMapping을 통해 요청을 Controller로 위임한다.

4. Controller는 요청을 처리한 후에 ViewName을 반환한다.

5. DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 사용자에게 반환한다.

 

 

[ Controller로 Data 반환하기 ]

그렇다면 view를 반환하는 경우가 아닌 Data를 반환해야 하는 경우는 어떻게 할까? @ResponseBody 어노테이션을 활용하여 Json 형태로 데이터를 반환할 수 있습니다.

 

1. Client는 URL 형식으로 웹 서비스에 요청을 보낸다.

2. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾는다.

3. HandlerMapping을 통해 요청을 Controller로 위임한다.

4. Controller는 요청을 처리한 후에 객체를 반환한다.

5. 반환되는 객체는 Json으로 Serialize되어 사용자에게 반환된다.