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