@Controller
와 @RestController
는 스프링 프레임워크에서 컨트롤러를 정의할 때 사용되는 어노테이션이다.
@Controller
어노테이션은 전통적인 웹 애플리케이션에서 사용되며, 데이터를 생성하거나 웹 뷰를 반환하는 등의 기능을 수행한다. 일반적으로 @Controller
는 View를 반환하기 위해 사용되며, View와 관련된 뷰 리졸버(View Resolver)를 사용한다. 따라서 @Controller
가 반환하는 값은 주로 HTML, JSP 등과 같은 뷰 템플릿이다.
@RestController
어노테이션은 RESTful 웹 서비스에서 사용된다. RESTful 웹 서비스에서는 JSON, XML, TEXT 등의 데이터 포맷으로 데이터를 반환해야 한다. 따라서 @RestController는 JSON/XML 등의 데이터를 반환하기 위해 사용되며, @Controller
의 기능에 @ResponseBody
어노테이션을 추가한 것과 같다. @RestController
는 뷰를 반환하지 않으며, HTTP 요청에 대한 응답으로 데이터를 직접 반환합니다.
즉, @Controller
는 View를 반환하기 위해 사용되고, @RestController
는 데이터를 반환하기 위해 사용된다. @RestController
를 사용하면, 데이터를 생성하기 위한 코드를 작성할 때 더 간결하고 명확한 코드를 작성할 수 있다!