TGViewer
Java Developer Java Developer @java_tg · 14.8K subscribers
Post #1966 4.27K
👩‍💻 Аннотации @Controller и @RestController

Сегодня поговорим о двух аннотациях в Spring — @Controller и @RestController, разберём их различия и приведём примеры использования.

Управление входящими HTTP-запросами — это самая типичная задача в разработке веб-приложений. Для этого в Spring и существуют аннотации @Controller и @RestController.

▶️Аннотация @Controller

Как бы банально не звучало, но эта аннотация используется для определения классов в качестве контроллеров. Это помогает Spring определить компоненты, которые будут обрабатывать входящие запросы:
@Controller
public class MyController {
@RequestMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Spring MVC");
return "hello";
}
}

В этом примере метод hello() обрабатывает запрос на URL /hello и возвращает имя представления (hello), которое будет отображаться пользователю как ответ.


▶️Аннотация @RestController

@RestController появилась в Spring 4.0 и объединяет в себе две аннотации — @Controller и @ResponseBody. Это означает, что она не только помечает класс как Spring MVC Controller, но и автоматически преобразует возвращаемые данные в формат JSON или XML:
@RestController
public class MyRestController {
@RequestMapping("/hello")
public String hello() {
return "Hello, Spring REST";
}
}

В этом случае, когда метод hello() обрабатывает запрос на URL /hello, он возвращает строку «Hello, Spring REST», которая автоматически преобразуется в формат JSON и отправляется в ответе на запрос.


Таким образом, основное различие между @Controller и @RestController заключается в том, что @Controller используется для обработки веб-страниц, а @RestController — для создания RESTful веб-сервисов, которые возвращают данные в формате JSON или XML.

Аннотация @Controller может быть использована и для Web MVC, и для REST приложений, но в случае REST приложений к каждому методу контроллера придется добавлять аннотацию @ResponseBody для автоматического преобразования ответа в формат JSON или XML. Определить, MVC это приложение или REST, можно по наличию или отсутствию аннотации @ResponseBody в методах контроллера.

100 🕺 — и я пишу новый пост

📱 Java Developer | #spring
  • 👍 10
  • ❤ 4
  • 🔥 1
More from @java_tg
  1. Oct 8, 2026👩‍💻 Что такое API и зачем оно нужно? Простой разбор API, endpoints, JSON и взаимодействи…
  2. Oct 7, 2026👩‍💻 Большая база вопросов для Java-собеседований Основные разделы: 🫡 Java Core и JVM; �…
  3. Oct 6, 2026Post #4392
  4. Oct 6, 2026👩‍💻 Что реально спрашивают на Java-собеседованиях Разбор 247 интервью: HashMap, equals/h…
  5. Oct 5, 2026Post #4389
  6. Oct 5, 2026👩‍💻 Реальные сервисы прямо внутри Java-тестов Вместо моков и локально поднятой базы Test…
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 →