Является ли аннотация @Component способом определения Spring-бина?

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

Ответ

Да, является. @Component — это основная стереотипная аннотация, которая помечает класс как кандидата для автоматического обнаружения и регистрации в Spring IoC-контейнере как бина.

  • Как это работает: При включенном сканировании компонентов (@ComponentScan) Spring находит классы с @Component и регистрирует их как бины.
  • Пример:
    @Component
    public class DataProcessor {
        public void process() { /* ... */ }
    }
    // Spring создаст бин с именем "dataProcessor" (по соглашению).

Специализированные производные аннотации (@Service, @Repository, @Controller) также являются бинами, но несут дополнительную семантику для слоев приложения и могут активировать специфичные функции (например, трансляцию исключений в @Repository).