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