Sobes.tech
Back to questions
Junior — Middle
66

Какое отличие между аннотациями @Controller и @RestController в Spring?

Companies where asked
ИннотехИннотех
РостелекомРостелеком
Ви6 Сервисес
Secreate
ГосуслугиГосуслуги

Answer from AI

sobes.tech AI

Аннотация @Controller в Spring используется для обозначения класса как контроллера в MVC-приложении. Методы такого контроллера обычно возвращают имя представления (view), которое будет отрендерено.

Аннотация @RestController — это специализированный вариант @Controller, которая автоматически добавляет аннотацию @ResponseBody ко всем методам класса. Это значит, что методы возвращают данные (обычно в формате JSON или XML) напрямую в тело HTTP-ответа, а не имя представления.

Пример:

@RestController
public class MyRestController {
    @GetMapping("/api/data")
    public MyData getData() {
        return new MyData("value"); // будет сериализовано в JSON
    }
}

@Controller
public class MyController {
    @GetMapping("/page")
    public String getPage() {
        return "pageView"; // имя шаблона для рендеринга
    }
}