본문 바로가기
❤️‍🔥TIL (Today I Learned)

[TIL] 2022-12-19(36day)

by elicho91 2022. 12. 19.

@Controller와 @RestController의 차이점


👉  @Controller

@Target(value=TYEP)
@Retention(value=RUNTIME)
@Documented
@Component
public @interface Controller

- Model 객체를 만들어 데이터를 담고 View를 반환

- View에 표시될 데이터가 있는 Model 객체를 만들고 올바른 View를 선택하는 일을 담당

- @ResponseBody를 사용하여 HTTP Response Body에 데이터를 담아 요청을 완료할 수 있다.

-  @Controller는 클래스를 Spring MVC 컨트롤러로 표시하는데 사용

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

- Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트.

- @ResponseBody를 사용하여 Client에게 JSON 형태로 데이터를 반환.

 

 

👉  @RestController

@Target(value=TYEP)
@Retention(value=RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController

- 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아서 전송

- RESTful 웹 서비스에서 사용되는 특수 컨트롤러 (@Controller와 @ResponsBody의 동작을 하나로 합친 컨트롤러)

- @RestController을 표시하면 모든 메소드가 뷰 대신 객체로 작성

- 모든 핸들러 메소드에서 @ResponseBody를 사용할 필요가 없다.

- RestController의 주용도는 JSON 형태로 객체 데이터를 반환하는 것


🙋‍♂️ 소감 : 

REStful 웹 서비스를 만드는 경우 @Controller + @ResponseBody를 사용하는 것 보다 @RestController을 사용하는 것이 좋다.

😈 아는 내용이라고 그냥 넘어가지 않기! 😈

 

'❤️‍🔥TIL (Today I Learned)' 카테고리의 다른 글

[TIL] 2022-12-21(38day)  (0) 2022.12.21
[TIL] 2022-12-20(37day)  (0) 2022.12.20
[TIL] 2022-12-15(35day)  (0) 2022.12.18
[TIL] 2022-12-14(34day)  (0) 2022.12.15
[TIL] 2022-12-14(33day)  (1) 2022.12.14

댓글