Назад к вопросам
СБЕР
Junior — Middle
64
Как отличить аннотацию @Component от @Bean в контексте Spring?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Аннотация @Component используется для автоматического обнаружения и регистрации класса как Spring-бина через сканирование классов (component scanning). Она ставится над классом и говорит Spring, что этот класс должен быть создан и управляться контейнером.
@Bean — это аннотация, которая применяется к методу внутри класса, помеченного как @Configuration. Метод с @Bean возвращает объект, который будет зарегистрирован в контексте Spring как бин. Это более явный способ создания бина, когда нужно контролировать процесс создания или использовать сторонние классы.
Пример:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
@Component
public class MyComponent {
// Этот класс будет автоматически зарегистрирован как бин
}
Итого:
@Component— аннотирует класс, бин создаётся автоматически при сканировании.@Bean— аннотирует метод, бин создаётся явно через возвращаемый объект метода.