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