Spring @Controller 및 @RestController 주석

1. 개요

이 빠른 튜토리얼에서는 Spring MVC에서 @Controller@RestController 주석 의 차이점에 대해 논의 할 것 입니다.

첫 번째 주석은 전통적인 Spring 컨트롤러에 사용되며 매우 오랫동안 프레임 워크의 일부였습니다.

@RestController의 주석은 RESTful 웹 서비스의 생성을 단순화하기 위해 스프링 4.0에서 도입되었다. @Controller@ResponseBody 를 결합한 편리한 주석 입니다. 컨트롤러 클래스의 모든 요청 처리 메서드에 @ResponseBody 주석 을 추가 할 필요가 없습니다 .

2. 스프링 MVC @Controller

클래식 컨트롤러는 @Controller 어노테이션 으로 어노테이션을 작성할 수 있습니다 . 이것은 단순히 @Component 클래스 의 특수화이며 구현 클래스가 클래스 경로 스캔을 통해 자동 감지되도록합니다.

@Controller 는 일반적으로 요청 처리 메서드에 사용되는 @RequestMapping 주석 과 함께 사용됩니다.

Spring MVC 컨트롤러의 간단한 예를 살펴 보겠습니다.

@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 로 자동 직렬화 할 수 있습니다 .

3. Spring MVC @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) { // ... } } 

컨트롤러에는 @RestController 주석이 포함되어 있으므로 @ResponseBody 가 필요하지 않습니다.

컨트롤러 클래스의 모든 요청 처리 메서드는 반환 객체를 HttpResponse 로 자동 직렬화합니다 .

4. 결론

이 기사에서는 Spring Framework에서 사용할 수있는 클래식하고 전문화 된 REST 컨트롤러를 살펴 보았습니다.

예제의 전체 소스 코드는 GitHub 프로젝트에서 사용할 수 있습니다. 이것은 Maven 프로젝트이므로 그대로 가져 와서 사용할 수 있습니다.