Назад к вопросам
ВТБ
Junior — Middle
68
Какое отличие между аннотациями @RestController и @Controller в Spring?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Аннотация @Controller используется для определения компонента Spring MVC, который обрабатывает HTTP-запросы и возвращает имя представления (view), например, JSP или HTML. Чтобы вернуть данные (например, JSON), нужно дополнительно использовать @ResponseBody над методами.
@RestController — это специализированная аннотация, которая объединяет в себе @Controller и @ResponseBody. Она автоматически сериализует возвращаемые объекты в JSON или XML и отправляет их в тело HTTP-ответа, что удобно для создания REST API.
Пример:
@RestController
public class MyRestController {
@GetMapping("/api/data")
public MyData getData() {
return new MyData("value"); // автоматически преобразуется в JSON
}
}
@Controller
public class MyController {
@GetMapping("/page")
public String getPage(Model model) {
model.addAttribute("attr", "value");
return "pageView"; // возвращает имя представления
}
}