Sobes.tech
Назад к вопросам
Junior — Middle
62

В чем отличие между аннотациями @Bean и @Component, и можно ли использовать их взаимозаменяемо?

Ответ от нейросети

sobes.tech AI

Аннотации @Bean и @Component в Spring имеют разные назначения и не всегда взаимозаменяемы:

  • @Component — аннотация для автоматического обнаружения и регистрации класса как Spring-бина при сканировании компонентов. Обычно применяется к классам, которые Spring должен создать и управлять ими.

  • @Bean — используется в методах конфигурационных классов (@Configuration) для явного определения и настройки бина. Позволяет создавать бины с более сложной логикой и параметрами.

Пример:

@Configuration
public class AppConfig {
    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

@Component
public class MyComponent {
    // автоматически зарегистрируется как бин
}

Итого, @Component удобен для простого сканирования классов, а @Bean — для явного создания и настройки бинов. Их нельзя просто заменить друг другом без изменения подхода к конфигурации.