Одна из типичных задач в разработке веб-приложений — это управление входящими 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
в методах контроллера.
Добавить комментарий