Разница между @Component, @Service, @Repository
@Component - универсальный компонент;
@Service - компонент-сервис, который используется для реализации бизнес логики;
@Repository - компонент, использующийся для хранения, извлечения и поиска. Аннотация применяется чаще всего при реализации логики взаимодействия с базой данных.
Различие
Различий между @Component и @Service нет. Аннотация @Service, содержит внутри себя аннотацию @Component и необходима лишь для индикации того, что этот аннотированный класс является сервисом.
@Repository используется для индикации того, что этот аннотированный класс является репозиторием для работы с каким-то внешним хранилищем, чаще всего с базой данных. Она работает точно так же, как @Component и @Service, но дополнительно оборачивает все исключения в DataException.