Sobes.tech
Назад к вопросам
Junior — Middle
67

Какое отличие между аннотациями @Component и @Repository в Spring?

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

sobes.tech AI

Аннотация @Component в Spring используется для обозначения любого компонента, который должен быть зарегистрирован как Spring Bean. Это общий стереотип, который можно применять к любым классам.

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

Таким образом, основное отличие:

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

Пример:

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

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