Ответ
Аннотация @Component помечает класс как компонент Spring, который будет автоматически обнаружен и зарегистрирован в контексте приложения как бин при включенном сканировании (@ComponentScan).
Почему именно класс?
- Spring работает с объектами (бина́ми), которые являются экземплярами классов. Аннотация указывает фреймворку, что данный класс нужно инстанциировать и управлять его жизненным циклом.
- Это основа для более специализированных стереотипных аннотаций:
@Service,@Repository,@Controller/@RestController. - Позволяет использовать внедрение зависимостей (например, через
@Autowired) в этот класс и из него.
Пример:
@Component
public class NotificationService {
public void send(String message) {
System.out.println("Sending: " + message);
}
}
Теперь NotificationService можно инжектировать в другие бины:
@Service
public class UserService {
@Autowired
private NotificationService notificationService;
}