Sobes.tech
Назад к вопросам
Junior — Middle
67

Какое отличие между аннотациями @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"; // возвращает имя представления
    }
}