@Controller является специализированным @Component: помимо регистрации bean, Spring MVC использует этот стереотип для обнаружения обработчиков запросов. @Service обозначает сервисный слой.
Можно ли использовать @Controller вместо @Service и что есть в @Controller такого, чего нет в @Component?
@Controller является специализированным @Component: помимо регистрации bean, Spring MVC использует этот стереотип для обнаружения обработчиков запросов. @Service обозначает сервисный слой.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
@Controller является специализированным @Component: помимо регистрации bean, Spring MVC использует этот стереотип для обнаружения обработчиков запросов. @Service обозначает сервисный слой.
Технически bean с @Controller можно внедрить как зависимость, но замена @Service искажает назначение класса и может повлиять на обнаружение web-handlers. Сам @Controller не делает каждый метод HTTP-ручкой: нужны подходящие mappings. Возвращаемая строка обычно трактуется как имя view, если нет @ResponseBody; @RestController объединяет @Controller и @ResponseBody. @Component не несёт этой MVC-семантики обнаружения контроллера.