@RestController
@RestController 어노테이션은 Spring MVC에서 사용되며, RESTful 웹 서비스를 개발할 때 컨트롤러 클래스에서 사용됩니다. @RestController 어노테이션은 @Controller 어노테이션과 @ResponseBody 어노테이션을 조합한 것입니다.
@Controller 어노테이션은 웹 애플리케이션에서 요청을 처리하는 컨트롤러 클래스에 사용됩니다. @Controller 어노테이션이 붙은 클래스에서는 요청 처리 메서드의 반환 값이 뷰(View)를 나타내는 것으로 간주됩니다. 그러나, RESTful 웹 서비스에서는 JSON 형식으로 데이터를 반환하는 것이 일반적입니다. 이 때, @ResponseBody 어노테이션을 사용하여 메서드가 반환하는 데이터가 HTTP 응답 본문에 직접 쓰여지도록 설정할 수 있습니다.
@RestController 어노테이션은 이러한 과정을 좀 더 간편하게 해주는 어노테이션입니다. @RestController 어노테이션이 붙은 클래스에서는 모든 메서드가 @ResponseBody 어노테이션과 동일한 효과를 가지게 됩니다. 즉, @RestController 어노테이션이 붙은 클래스에서는 JSON, XML 등의 데이터를 반환하는 메서드를 쉽게 작성할 수 있습니다.
아래는 @RestController 어노테이션을 사용한 예시 코드입니다.
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
User user = userService.getUserById(id);
return user;
}
@PostMapping("/users")
public User addUser(@RequestBody User user) {
userService.addUser(user);
return user;
}
}
위 코드에서는 @RestController 어노테이션을 사용하여 RESTful 웹 서비스에서 사용할 컨트롤러 클래스를 정의하고 있습니다. 이 클래스에서는 @GetMapping 어노테이션과 @PostMapping 어노테이션을 사용하여 HTTP GET 요청과 HTTP POST 요청을 처리하고 있습니다. 각 메서드에서는 @PathVariable 어노테이션과 @RequestBody 어노테이션을 사용하여 요청 경로의 변수와 요청 본문에 있는 데이터를 파라미터로 받아옵니다. 그리고, 반환 값으로 데이터를 JSON 형식으로 반환하고 있습니다.