Back to questions
СБЕР Тех
Aston
Junior — Middle
63
Чем отличается использование аннотаций @Controller и @RestController в рамках Spring?
Companies where asked
Red Collar
Effective Mobile
eRaga Infosystem
Answer from AI
sobes.tech AI
Аннотация @Controller в Spring используется для обозначения класса как контроллера MVC, который обрабатывает HTTP-запросы и возвращает имя представления (view), например, JSP или Thymeleaf шаблон.
@RestController — это специализированная аннотация, которая объединяет @Controller и @ResponseBody. Она указывает, что методы контроллера возвращают данные напрямую в теле HTTP-ответа, обычно в формате JSON или XML, без использования представлений.
Пример:
@RestController
public class ApiController {
@GetMapping("/api/data")
public Data getData() {
return new Data("value"); // будет автоматически сериализовано в JSON
}
}
@Controller
public class WebController {
@GetMapping("/page")
public String getPage(Model model) {
model.addAttribute("attr", "value");
return "pageView"; // имя шаблона для рендеринга
}
}
Таким образом, @RestController удобен для создания REST API, а @Controller — для веб-приложений с серверной генерацией HTML.