Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
30 Авг 2023
3 мин
4930

Различия между аннотациями @Controller и @RestController в Spring

Пройдите тест, узнайте какой профессии подходите

Одна из типичных задач в разработке веб-приложений — это управление входящими HTTP-запросами. В фреймворке Spring для этого существуют аннотации @Controller

Одна из типичных задач в разработке веб-приложений — это управление входящими HTTP-запросами. В фреймворке Spring для этого существуют аннотации @Controller и @RestController.

Разработка на Java — востребованное направление, такие специалисты будут нужны на рынке еще долго. На курсе «Java-разработчик» от Skypro освоить профессию можно с нуля за 11 месяцев, даже если вы гуманитарий и ничего не знаете об IT. Программа составлена от простого к сложному и адаптирована для новичков. Преподаватели — практикующие специалисты из крупных компаний: «Сбер», «Самокат» и других.

Аннотация @Controller

Аннотация @Controller используется для определения классов в качестве контроллеров в Spring MVC. Это помогает Spring определить компоненты, которые будут обрабатывать входящие запросы.

Пример использования:

@Controller
public class MyController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, Spring MVC");
        return "hello";
    }
}

В этом случае метод hello() обрабатывает запрос на URL /hello и возвращает имя представления (hello), которое будет использовано для отображения ответа пользователю. Имя представления будет сопоставлено с файлом представления (например, hello.jsp) с помощью определенного ViewResolver.

Аннотация @RestController

Аннотация @RestController появилась в Spring 4.0 и объединяет в себе аннотации @Controller и @ResponseBody. Это означает, что она не только помечает класс как Spring MVC Controller, но и автоматически преобразует возвращаемые контроллером данные в формат JSON или XML.

Пример использования:

@RestController
public class MyRestController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello, Spring REST";
    }
}

В этом случае, когда метод hello() обрабатывает запрос на URL /hello, он возвращает строку «Hello, Spring REST», которая автоматически преобразуется в формат JSON и отправляется в ответе на запрос.

В Skypro на курсе «Java-разработчик» вы научитесь писать программы для игр и приложений, освоите все нужные инструменты: Git, GitHub, Docker, Swagger, PostgreSQL и другие. Потренируетесь под руководством опытных наставников и соберете сильное портфолио. На курсе действует гарантия трудоустройства: поможем вам найти работу или вернем деньги за курс.

Вывод

Таким образом, основное различие между @Controller и @RestController заключается в том, что @Controller используется для обработки веб-страниц, а @RestController — для создания RESTful веб-сервисов, которые возвращают данные в формате JSON или XML.

Аннотация @Controller может быть использована и для Web MVC, и для REST приложений, но в случае REST приложений к каждому методу контроллера придется добавлять аннотацию @ResponseBody для автоматического преобразования ответа в формат JSON или XML. Определить, MVC это приложение или REST, можно по наличию или отсутствию аннотации @ResponseBody в методах контроллера.

Добавить комментарий