В чём разница между @Component, @Service, @Repository и @Controller?

@Component — общий стереотип bean; @Service обозначает бизнес-сервис, @Repository — доступ к данным, @Controller — web-контроллер. Все три специализированных стереотипа основаны на @Component.

Короткий ответ

Что ответить на собеседовании

@Component — общий стереотип bean; @Service обозначает бизнес-сервис, @Repository — доступ к данным, @Controller — web-контроллер. Все три специализированных стереотипа основаны на @Component.

Подробный разбор

Ответ с пояснениями

@Component — общий стереотип bean; @Service обозначает бизнес-сервис, @Repository — доступ к данным, @Controller — web-контроллер. Все три специализированных стереотипа основаны на @Component.

Различия не только документирующие: MVC распознаёт контроллеры, а инфраструктура exception translation может обрабатывать persistence-ошибки у @Repository. @Service само по себе не включает транзакцию и не гарантирует потокобезопасность. Разметка должна отражать ответственность класса. Создание репозитория Spring Data по интерфейсу — отдельная инфраструктура, а не магическое свойство любого @Repository.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее