Sobes.tech
Назад к вопросам
Senior
7

В чём разница между аннотациями @Repository и @Component в Spring?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Аннотация @Component — это базовая стереотипная аннотация в Spring, которая указывает, что класс является компонентом и должен быть зарегистрирован в контексте Spring как bean.

@Repository — это специализированная аннотация, которая расширяет @Component и предназначена для обозначения слоя доступа к данным (DAO). Она добавляет дополнительную семантику и может влиять на обработку исключений, например, преобразуя исключения специфичные для базы данных в Spring DataAccessException.

Итого:

  • @Component — общий компонент.
  • @Repository — компонент слоя доступа к данным с дополнительной обработкой исключений.

Пример:

@Repository
public class UserRepository {
    // методы доступа к БД
}

@Component
public class UserService {
    // бизнес-логика
}