Sobes.tech
Back to questions
Junior — Middle
63

Чем отличается использование аннотаций @Controller и @RestController в рамках Spring?

Companies where asked
Red Collar
СБЕР ТехСБЕР Тех
AstonAston
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.