Sobes.tech
Senior

Quelle est la différence entre l'annotation @Bean et @Component ? Quand utiliser l'une ou l'autre ?

sobes.tech IA

Réponse de l'IA

@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");
    }
}