오랫동안 스프링 프레임워크(Spring 2.5버전에서 도입)의 일부분을 담당해온 @Controller를 전통적인 Spring 컨트롤러로 사용할 수 있습니다.
Spring 4.0은 RESTful 웹 서비스 생성을 단순화하기 위해 @RestController 어노테이션을 도입했습니다.
@RestController 어노테이션은 @Controller와 @ResponseBody를 결합하는 편리한 어노테이션으로,
컨트롤러 클래스의 메소드를 처리하는 모든 요청을 @ResponseBody 어노테이션으로 처리할 필요가 없습니다.
@Controller 어노테이션으로 전통적인 컨트롤러를 표시할 수 있습니다.
이 어노테이션은 단순히 @Component 클래스를 특화한 것으로, 클래스 패스 스캐닝을 통해 구현 클래스를 자동 감지할 수 있게 해줍니다.
메소드를 처리하는 요청을 위한 @RequestMapping 어노테이션과의 조합으로 @Controller를 일반적으로 사용합니다.
Spring MVC controller 예제
@Controller @RequestMapping("books") public class SimpleBookController { @GetMapping("/{id}", produces = "application/json") public @ResponseBody Book getBook(@PathVariable int id) { return findBookById(id); } private Book findBookById(int id) { // ... } }
@ResponseBody 어노테이션으로 메소드 처리 요청을 하고, HttpResponse로 반환 객체를 자동 직렬화할 수 있습니다.
@RestController는 컨트롤러를 특화한 버전입니다.
@RestController는 @Controller와 @ResponseBody 어노테이션을 포함하고 있으며, 컨트롤러 구현을 단순화하는 결과를 가져옵니다.
@RestController @RequestMapping("books-rest") public class SimpleBookRestController { @GetMapping("/{id}", produces = "application/json") public Book getBook(@PathVariable int id) { return findBookById(id); } private Book findBookById(int id) { // ... } }
컨트롤러 클래스의 메소드를 처리하는 모든 요청은 자동으로 반환 객체를 HttpResponse로 직렬화합니다.