Встречается на собеседованиях • сегодня

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

Все три аннотации являются стереотипными и помечают класс как Spring-компонент, но имеют семантические различия:

  • @Component - базовая аннотация для любых Spring-managed компонентов
  • @Repository - специально для DAO/репозиториев (добавляет автоматическую трансляцию SQL-исключений в Spring DataAccessException)
  • @Service - для бизнес-сервисов (чисто семантическая разметка)

Пример:

java
@Component
public class MyComponent {}

@Repository 
public class UserRepository {}

@Service
public class UserService {
    private final UserRepository userRepository;
    
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

На функциональном уровне все три аннотации эквивалентны - Spring обрабатывает их одинаково. Разница лишь в семантике и дополнительном поведении у @Repository.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы