반응형
결론 먼저 말하면 둘의 차이는 HTTP Response Body가 생성 유무로 나뉜다.
즉 RestController 는 Controller + Response Body 이다.
@Controller
- 전통적인 Spring MVC의 컨트롤러
- View 를 사용
- @ResponseBody를 사용할 경우 View 대신 Controller에서 직접 데이터 리턴 가능
@RestController
- RESTFUL 웹서비스에서 컨트롤러
- 반환 객체 데이터 타입 : JSON/XML 타입의 HTTP 응답을 직접 리턴
- 실행 흐름
- @Controller
- Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client
- @ResponseBody의 실행 흐름
Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller (ResponseBody) -> Response -> Client
- @RestController
- Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController (자동 ResponseBody 추가) -> HTTP Response -> Client
- @Controller
@Controller(Spring MVC Controller)
[controller - view]
Spring MVC Restful 전통적인 Work Flow
- 전통적인 Spring MVC Controller인 @Controller는 주로 View를 반환하기 위해 사용
- Client는 URI형식으로 웹 서비스에 요청 전송
- Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트
- Controller가 요청을 처리한 후 응답을 DispatcherServlet으로 반환하고 DispatcherServlet은 View를 사용자에게 반환.
[controller - data]
Spring 3.x MVC Restful Web Service Work Flow
- @ResponseBody로 Spring MVC의 컨트롤러에서는 데이터를 반환하기 위해 사용
- Client는 URI형식으로 웹 서비스에 요청 전송
- Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트
- @ResponseBody를 사용하여 Client에게 Json형태로 데이터를 반환.
@RestController(Spring Restful Controller)
- RestController = Spring MVC Controller + @ResponseBody
- 주용도 : Json/XML형태로 객체 데이터 반환
- Client는 URI형식으로 웹 서비스에 요청 전송
- Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트
- RestController는 해당 요청을 처리하고 데이터를 반환.
반응형
'IT > Java' 카테고리의 다른 글
Java 와 Jakarta (37) | 2022.11.13 |
---|---|
이클립스 workspace 저장위치 확인 및 바꾸기 (46) | 2022.11.09 |
POJO 방식 (37) | 2022.10.27 |
@builder annotation (44) | 2022.10.26 |
Error creating bean with name 'entityManagerFactory' (28) | 2022.10.22 |
댓글