Ответ
@RestController — это удобная стереотипная аннотация Spring MVC, которая объединяет @Controller и @ResponseBody.
Назначение: Создание RESTful веб-сервисов, где каждый метод обработчика по умолчанию возвращает данные (например, JSON/XML), а не имя представления для рендеринга HTML.
Преимущества и особенности:
- Сокращение кода: Не нужно аннотировать каждый метод
@ResponseBody. - Четкое разделение: Контроллеры для REST API (
@RestController) vs. контроллеры для веб-интерфейсов с HTML (@Controller). - Под капотом
@RestController— это@Controller+@ResponseBody.
Пример:
@RestController
@RequestMapping("/api/users")
public class UserRestController {
@GetMapping
public List<User> getAllUsers() { // Возвращает JSON-список
return userService.findAll();
}
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) { // Принимает и возвращает JSON
User saved = userService.save(user);
return ResponseEntity.created(URI.create("/api/users/" + saved.getId())).body(saved);
}
}