Spring boot 컨퍼런스를 읽으면서 궁금점이 생긴 내용을 작성한 내용입니다.
@Controller VS @RestController
Http Response Body가 생성되는 방식의 차이
@Controller의 실행 흐름
Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client
@RestController의 실행 흐름
Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController (자동 ResponseBody 추가)-> HTTP Response -> Client
쉽게 설명하면 @Controller는 Model과 View에 대해서 리턴을 해준다면
@RestController는 Respone객체를 리턴해준다고 생각하면 쉬울 듯 하다.
그런데 @Controller에서도 객체를 리턴하고 싶다면 @ResponseBody를 사용함으로써 가능하다.
@ResponseBody의 실행 흐름
Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller (ResponseBody)-> Response -> Client
마지막으로 자주 쓰는 ResponseEntity
ResponseEntity는 별도의 View를 제공하지 않은 형태로 서비스를 실행한다. 예외의 상황에서 문가가 발생 할 수 있다.
개발자가 직접 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스로 404, 500같은 HTTP 상태 코드를 전송하려는 데이터와 함께 전송 가능 하므로 세밀한 제어를 원하는 경우 사용 가능하다.
'백엔드 > Spring Boot' 카테고리의 다른 글
업비트 자동매매 서버 만들기 (1~3편) (2) | 2020.11.14 |
---|---|
Spring boot + JWT + Kakao OAuth / 3편 (WebMvcConfig) (0) | 2020.11.05 |
Spring boot + JWT+ Kakao OAuth / 2편 (Security) (0) | 2020.11.05 |
Spring boot + JWT + Kakao OAuth / 1편 (멀티모듈) (1) | 2020.11.04 |
댓글