[Spring] @Controller와 @RestController의 차이

yunSeok·2023년 10월 19일
0

Spring

목록 보기
1/4
post-thumbnail

차이점

@Controller

  • Controller에서 Model에 데이터를 담아서 JSP 등과 같은 뷰로 전달하는 방식

  • @Controller의 주용도는 view(화면)을 리턴하는 것이고

@RestController

  • @RestController에서는 메서드의 리턴 타입으로 사용자가 정의한 클래스 타입을 사용할 수 있고, 이를 JSON이나 XML로 자동으로 처리할 수 있습니다.

  • @RestController는 객체를 반환할때 객체 데이터는 바로 JSON/XML 타입의 HTTP 응답을 직접 리턴하게 된다.

  • Spring 4에서부터는 @Controller 외에 @RestController 어노테이션을 추가해서 @Controller의 모든 메서드의 리턴 타입을 다르게 처리하도록 합니다.

  • @RestController 이전에는 @Controller + @ResponseBody를 이용해서 사용했습니다. (Spring 3)


실행 과정

1. Spring MVC의 기본적인 흐름

@Controller

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client

  • View로 데이터가 바로 전달됨


2. Spring 3.0 MVC RESTful Web Service 흐름

@Controller + @ResponseBody

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller (ResponseBody) -> Response -> Client

  • @ResponseBody 어노테이션을 사용하면 View를 리턴하지 않고 컨트롤러에서 직접 테이터를 리턴할 수 있다.


3. Spring 4.0 MVC RESTful Web Service 흐름

@RestController

Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController -> HTTP Response -> Client

  • RestController = @Controller + @ResponseBody
  • Json/XML형태로 객체 데이터 반환

@ResponseBody

  • 일반적인 JSP와 같은 뷰로 전달되는 게 아니라 데이터 자체를 전달하기 위한 용도

@PathVariable

  • URL 경로에 있는 값을 파라미터로 추출하려고 할 때 사용

  • 값을 얻을 때에는 int, double과 같은 기본 자료형은 사용할 수 없다.

  • { } 로 처리된 부분이 컨트롤러의 메서드에서 변수로 처리가 가능합니다.

@CrossOrigin

  • Ajax의 크로스 도메인 문제를 해결해주는 어노테이션

@RequestBody

  • JSON 데이터를 원하는 타입으로 바인딩 처리









참고 사이트
https://rimkongs.tistory.com/221

이미지

0개의 댓글