@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를 사용하면, 데이터를 생성하기 위한 코드를 작성할 때 더 간결하고 명확한 코드를 작성할 수 있다!