@Component — общий стереотип bean; @Service обозначает бизнес-сервис, @Repository — доступ к данным, @Controller — web-контроллер. Все три специализированных стереотипа основаны на @Component.
В чём разница между @Component, @Service, @Repository и @Controller?
@Component — общий стереотип bean; @Service обозначает бизнес-сервис, @Repository — доступ к данным, @Controller — web-контроллер. Все три специализированных стереотипа основаны на @Component.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
@Component — общий стереотип bean; @Service обозначает бизнес-сервис, @Repository — доступ к данным, @Controller — web-контроллер. Все три специализированных стереотипа основаны на @Component.
Различия не только документирующие: MVC распознаёт контроллеры, а инфраструктура exception translation может обрабатывать persistence-ошибки у @Repository. @Service само по себе не включает транзакцию и не гарантирует потокобезопасность. Разметка должна отражать ответственность класса. Создание репозитория Spring Data по интерфейсу — отдельная инфраструктура, а не магическое свойство любого @Repository.