Спросят с вероятностью 12%
Основное различие между аннотациями
@RestController и @Controller заключается в способе обработки HTTP-запросов и возвращаемых ими ответов, а также в предназначении этих аннотаций.@Controller
Используется для определения классов в Spring MVC, которые работают как контроллеры в модели MVC (Model-View-Controller). Классы, аннотированные как
@Controller, обычно возвращают имя представления (view), и Spring использует ViewResolver для определения, какое представление должно быть отображено в ответ на запрос. Также, при необходимости возвращать данные напрямую в теле ответа, в методах контроллера, аннотированных @Controller, используется @ResponseBody.Пример:
@Controller
public class MyController {
@RequestMapping("/greeting")
public String greet(Model model) {
model.addAttribute("message", "Hello World");
return "greeting"; // Имя представления, которое нужно отрендерить
}
}
@RestController
Это специализированная версия аннотации
@Controller, которая предназначена для создания RESTful веб-сервисов. Она объединяет в себе @Controller и @ResponseBody, благодаря чему все методы в классе, аннотированном @RestController, автоматически считаются имеющими аннотацию @ResponseBody. Это означает, что данные, возвращаемые методами, автоматически сериализуются в JSON или XML и возвращаются в теле HTTP-ответа.Пример:
@RestController
public class MyRestController {
@RequestMapping("/data")
public Map<String, String> getData() {
Map<String, String> data = new HashMap<>();
data.put("message", "Hello World");
return data; // Данные автоматически сериализуются в JSON и возвращаются в теле ответа
}
}
Основное различие
✅@Controller используется для веб-приложений с серверной генерацией HTML-страниц (представлений). Для возврата данных в теле ответа необходимо явно использовать
@ResponseBody.✅@RestController предназначен для создания RESTful веб-сервисов, где все методы автоматически возвращают данные в теле ответа, обычно в формате JSON или XML, что делает его идеальным выбором для API-бэкендов.
Выбор между
@Controller и @RestController зависит от конкретных требований к приложению и предпочтительного способа взаимодействия с клиентом или потребителем API.👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые