@Controller 와 @restController 의 차이

수달·2021년 5월 17일
0

스프링

목록 보기
4/4

admin 페이지를 만들기 위해서

지금 하고 있는 프로젝트에서 관리자 페이지를 만들기 위한 작업을 하게 되었다.

스프링에서 컨트롤러

스프링에서 컨트롤러는 반환 값에 따라 크게 두가지로 나뉘게 된다

  • controller
  • restController

Controller

Spring MVC Controller 의 전통적인 컨트롤러인 @Controller 는 view 를 반환하기 위해서 사용한다.

사용방법

1) 클라이언트는 URI 형식으로 웹 서비스에 요청을 보낸다.
localhost:/0808/admin
2)Mapping 되는 Handler 와 그 Type 을 찾는 DispatcherServlet 이 요청을 인터셉트 한다.

3) Controller 가 view 를 반환하기 위해서 ViewResolver 가 사용되며, ViewEwsolver 설정에
맞게 view 를 찾아 렌더링 한다.

4) 데이터를 반환하고 싶다면, @ResponseBody 를 활용해서 컨트롤러에서 Json 형태로 반환이 가능하다.

RestContorller

기본 Controller 에 ResponseBody 가 추가된 것이다. 즉 Json으로 값을 반환하기 위해서 사용하는 것이다.

사용방법

1) 클라이언트는 URI 형식으로 웹 서비스에 요청을 보낸다.
localhost:/0808/admin
2)Mapping 되는 Handler 와 그 Type 을 찾는 DispatcherServlet 이 요청을 인터셉트 한다.

3) RestController 가 해당 요청을 처리하고 ResponseEntity에 데이터를 담아서 반환한다.

@RestController 가 데이터르르 반환하기 위해서는 view Resolver 대신 http MaessageConverter가 동작한다. HttpMaessageConverter에는 여러 Converter가 등록되어 있고, 반환해야하는 데이터에 따라서 사용되는 것이 다르기 때문에 Spring은 클라이언트의 Http Accept 헤더와 서버의 컨트롤러 반환 타입 정보를 조합해 적합한 httpMessageConverter를 선택하여 이를 처리한다.

profile
짜장면 쟁이

0개의 댓글