Senior
Mi a különbség az @Bean és az @Component annotáció között? Mikor használjuk az egyiket vagy a másikat?
sobes.tech MI
Válasz az MI-től
@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");
}
}