@Controller используется для определения классов веб-контроллеров, которые управляют запросами и возвращают представление (например, JSP, Thymeleaf) для отображения. Возвращаемое значение метода обычно является логическим именем представления.
@RestController является специализированной аннотацией, которая объединяет функциональность @Controller и @ResponseBody. Она указывает, что контроллер напрямую возвращает данные (объекты, JSON, XML и т.д.) в теле ответа, а не имя представления. Это удобно для создания RESTful веб-сервисов.
Ключевая разница в поведении при возврате значения:
| Аннотация | Поведение при возврате | Применение |
|---|---|---|
| @Controller | Имя представления | Традиционные веб-приложения |
| @RestController | Данные (тело ответа) | RESTful веб-сервисы |