TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #97 5.57K
В чём основное различие между RestController и Controller ?
Спросят с вероятностью 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 разработчика. Ставь 👍 если нравится контент

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
  • 👍 32
  • ❤ 2
More from @easy_java_ru
  1. Oct 12, 2026🤔 Жизненный цикл сервлетов? 1. Загрузка и инициализация (init); 2. Обработка запроса (ser…
  2. Oct 12, 2026🤔 Как остановить поток? Остановить поток в Java можно несколькими способами, но важно пом…
  3. Oct 11, 2026🤔 Какой класс позволяет читать данные из входного байтового потока в формате примитивных…
  4. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  5. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  6. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →