@Controller
와 @RestController
는 Spring Framework에서 컨트롤러 클래스를 정의하기 위한 주요 어노테이션이다. 두 어노테이션 모두 클라이언트 요청을 처리하고 응답을 반환하는 역할을 수행하지만, 주요 차이점이 있다.
@ResponseBody
어노테이션을 메소드 레벨에 추가해야 한다.@ResponseBody
어노테이션을 추가할 필요가 없다. @RestController
는 내부적으로 @Controller
와 @ResponseBody
어노테이션을 합친 것으로 생각할 수 있다.@Controller
는 주로 뷰 이름을 반환하여 웹 페이지를 렌더링하는데 사용되며, HTTP 응답 본문에 데이터를 직접 넣으려면 @ResponseBody
를 추가로 사용해야 한다.@RestController
는 RESTful 웹 서비스를 생성하는데 사용되며, 기본적으로 HTTP 응답 본문에 데이터를 반환한다.