Чем отличается @Controller от @RestController кроме того что RestController содержит @ResponseBody?

И да меня подбешивает когда говорят что если не знаешь чем отличается RestController от Controller Другое можно не спрашивать. Потому что в Спринге столько тонкостей что голова идёт кругом. Ещё говориться что Сontroller управляет моделями, а RestController - данными. Что это значит?


Ответы (1 шт):

Автор решения: Maksim Mukhachou

Основная разница между @Controller и @RestController заключается в способе создания тела HTTP ответа. Если класс имеет аннотацию @Controller, то его методы-обработчики без @ResponseBody возвращают строку (String) - название представления, которое надо показать пользователю. Методы-обработчики с @ResponseBody могут иметь любой тип возвращаемого значения.

@RestController по сути объединяет в себе эти две аннотации, и соответственно методы класса, помеченного данной аннотацией могут иметь любой тип возвращаемого значения.

Controller является частью MVC. Если вкратце - Controller взаимодействует с моделью, получает из неё какие-то данные и затем отображает их в представлении.

RestController используется для создания RESTfull веб-сервисов. Он взаимодействует с какими-либо данными и возвращает объект, который представляется в HTTP ответе в виде JSON или XML.

→ Ссылка