@Controller используется для обработки веб-запросов и возвращает имена представлений (.jsp, .html и т.п.). Он часто используется в MVC-архитектуре, где отвечает за взаимодействие с моделью данных и выбор представления для отображения.
@RestController является специализированной версией @Controller. Он автоматически преобразует возвращаемые значения методов в формат HTPP-ответа, обычно в JSON или XML. Это происходит благодаря автоматическому включению @ResponseBody для каждого метода внутри контроллера. @RestController чаще используется для создания RESTful веб-сервисов, которые предоставляют данные в чистом виде, а не возвращают HTML-страницы.
| Характеристика | @Controller | @RestController |
|---|---|---|
| Предназначение | Обработка веб-запросов, возврат представлений | Создание RESTful веб-сервисов, возврат данных (JSON, XML) |
@ResponseBody | Требует явного использования для каждого метода, возвращающего данные | Автоматически применяется ко всем методам |
| Возвращаемый тип | Имя представления (String), ModelAndView | Данные (объекты, List и т.д.), автоматически сериализуются |
Пример:
@Controller:
java
@RestController:
java