Ответ
Аннотация @Component — это базовая стереотипная аннотация Spring, которая помечает класс как «компонент». Её основная цель — указать Spring, что этот класс должен быть обнаружен механизмом сканирования классов (@ComponentScan) и зарегистрирован в ApplicationContext как управляемый бин (Spring Bean).
Как это работает:
- Spring сканирует указанные пакеты.
- Классы, помеченные
@Component(или её специализациями), регистрируются как бины. - Spring управляет их жизненным циклом и внедряет зависимости.
Пример:
@Component // Будет зарегистрирован как бин с именем "simpleService"
public class SimpleService {
public String getMessage() {
return "Hello from Component";
}
}
@Component является родительской для более семантических аннотаций:
@Service— для бизнес-логики.@Repository— для доступа к данным (DAO).@Controller/@RestController— для веб-слоя.
Все они являются @Component и обрабатываются одинаково на этапе сканирования, но несут разную смысловую нагрузку.