Ответ
Аннотация @Repository в Spring Data помечает класс как компонент слоя доступа к данным (DAO). Она выполняет две основные функции:
- Стереотип Spring: Автоматически регистрирует класс как bean в контексте Spring, аналогично
@Component, но с семантикой репозитория. - Обработка исключений: Преобразует специфичные исключения от технологий доступа к данным (JDBC, Hibernate, JPA) в непроверяемые исключения Spring
DataAccessException. Это обеспечивает единообразную обработку ошибок и избавляет от привязки к конкретной реализации.
Пример объявления:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByEmail(String email);
}
Почему это важно: Использование @Repository вместо @Component явно указывает на роль класса и активирует дополнительную инфраструктурную поддержку (перехват исключений). В Spring Data JPA реализация интерфейса с этой аннотацией создается автоматически.