Ответ
@Component — это базовая стереотипная аннотация Spring, которая помечает класс как Spring Bean, управляемый IoC-контейнером. Это основа для автоматического сканирования и регистрации компонентов.
Ключевые особенности:
- Классы с
@Componentавтоматически обнаруживаются при включённом сканировании (@ComponentScanили<context:component-scan>). - Spring создаёт и управляет жизненным циклом экземпляров (бинов) этих классов.
- Является мета-аннотацией для более специализированных стереотипов:
@Service— для бизнес-логики.@Repository— для доступа к данным (добавляет трансляцию исключений).@Controller/@RestController— для веб-слоя.
Пример объявления и использования:
@Component // Будет обнаружен и зарегистрирован как бин
public class NotificationService {
public void send(String message) {
System.out.println("Sending: " + message);
}
}
@Service
public class OrderService {
@Autowired // Spring внедрит зависимость автоматически
private NotificationService notificationService;
public void placeOrder() {
notificationService.send("Order placed");
}
}
Почему это важно: @Component — фундамент для конфигурации на основе аннотаций, которая заменяет ручное объявление бинов в XML или Java-конфигурации, обеспечивая удобство и снижая количество шаблонного кода.