Какую роль играет аннотация @Component в Spring?

«Какую роль играет аннотация @Component в Spring?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аннотация @Component — это базовая стереотипная аннотация Spring, которая помечает класс как «компонент». Её основная цель — указать Spring, что этот класс должен быть обнаружен механизмом сканирования классов (@ComponentScan) и зарегистрирован в ApplicationContext как управляемый бин (Spring Bean).

Как это работает:

  1. Spring сканирует указанные пакеты.
  2. Классы, помеченные @Component (или её специализациями), регистрируются как бины.
  3. Spring управляет их жизненным циклом и внедряет зависимости.

Пример:

@Component // Будет зарегистрирован как бин с именем "simpleService"
public class SimpleService {
    public String getMessage() {
        return "Hello from Component";
    }
}

@Component является родительской для более семантических аннотаций:

  • @Service — для бизнес-логики.
  • @Repository — для доступа к данным (DAO).
  • @Controller / @RestController — для веб-слоя.

Все они являются @Component и обрабатываются одинаково на этапе сканирования, но несут разную смысловую нагрузку.