[Spring] @Controller 와 @RestController 차이
Spring MVC에서 웹 애플리케이션의 요청을 처리하는 컨트롤러 클래스를 지정하는 어노테이션
데이터 반환 형식
@Controller 는 일반적으로 View를 반환하기 위해 사용되며, 웹 페이지를 렌더링하고 View와 모델을 연결하는 역할을 수행한다.
@RestController는 RESTful 웹 서비스를 위해 사용되며, JSON, XML 등의 데이터 형식으로 데이터를 반환하기 위해 사용된다.
응답처리
@Controller 에서는 ModeAndView, View, Model, Map 등을 반환하여 View와 모델을 처리하고 렌더링한다.
@RestController 에서는 데이터 객체 자체를 반환하며, Spring MVC 는 해당 객체를 JSON, XML 등의 형식으로 변환하여 응답한다.
응답 타입
@Controller 는 주로 웹 브라우저와 같은 클라이언트에서 View를 렌더링하기 위해 사용되므로 HTML을 응답으로 반환하는 것이 일반적이다.
@RestController 는 주로 API엔드포인트를 구현하는 데 사용되므로 JSON, XML 등의 데이터 형식을 응답으로 반환하는 것이 일반적이다.
@ResponseBody 사용 여부
@Controller 에서는 @ResponseBody 어노테이션을 사용하여 메소드 반환 값을 응답의 본문에 직접 쓰는 것이 필요하다.
@RestController 에서는 @ResponseBody 어노테이션을 사용하지 않아도 기본적으로 메소드의 반환 값이 응답의 본문으로 전송된다.
정리
웹 애플리케이션에서 View를 렌더링하거나 데이터를 JSON, XML 등의 형식으로 반환해야 하는 경우에는 @Controller를 사용하고,
RESTful 웹 서비스를 개발하고 JSON, XML 등의 형식으로 데이터를 반환해야 하는 경우에는 @RestController 를 사용하는 것이 일반적이다.
댓글남기기