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



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