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

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

Компании, где спрашивали
ООО СКВАД

Ответ от нейросети

sobes.tech AI

Аннотация @Controller используется для определения контроллера в Spring MVC, который обычно возвращает имя представления (view) для рендеринга HTML-страницы. В то время как @RestController — это специализированная аннотация, которая объединяет в себе @Controller и @ResponseBody. Это значит, что методы в классе с @RestController по умолчанию возвращают данные (например, JSON или XML), а не имя представления.

Пример:

@RestController
public class MyRestController {
    @GetMapping("/data")
    public MyData getData() {
        return new MyData("value"); // Возвращается JSON
    }
}

@Controller
public class MyController {
    @GetMapping("/page")
    public String getPage() {
        return "pageView"; // Возвращается имя view для рендеринга
    }
}

Таким образом, @RestController удобен для создания REST API, а @Controller — для веб-приложений с серверным рендерингом.