Senior
49
Čime se razlikuje anotacija @Bean od @Component? Kada koristiti jednu, a kada drugu?
Компаније где су питане
Одговор од АИ
sobes.tech АИ
@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");
}
}