1. Обзор
В этом кратком руководстве мы обсудим разницу между @Controller и @RestController аннотациями в Spring MVC.
Мы можем использовать первую аннотацию для традиционных контроллеров Spring, и она была частью фреймворка в течение очень долгого времени.
Spring 4.0 представила аннотацию @RestController , чтобы упростить создание веб-сервисов RESTful. Это удобная аннотация , которая объединяет @Controller и @ResponseBody , что устраняет необходимость аннотировать каждый метод обработки запросов класса controller аннотацией @ResponseBody .
Дальнейшее чтение:
Весеннее сопоставление запросов
Аннотация Spring @RequestParam
2. Пружинный контроллер MVC @
Мы можем аннотировать классические контроллеры с помощью аннотации @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 . Эта аннотация позволяет автоматически сериализовать возвращаемый объект в ответ Http|/.
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. Заключение
В этой статье мы рассмотрели классические и специализированные контроллеры REST, доступные в Spring Framework.
Полный исходный код примеров доступен в проекте GitHub . Это проект Maven, поэтому его можно импортировать и использовать как есть.