Sobes.tech
Назад к вопросам
Senior
4

В чём отличие аннотации @Bean от @Component?

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

Аннотация @Component используется для автоматического обнаружения и регистрации класса как Spring bean при сканировании компонентов (component scanning). Это означает, что Spring сам создаст экземпляр класса и управляет его жизненным циклом.

Аннотация @Bean применяется к методам внутри конфигурационных классов (@Configuration). Она указывает, что метод возвращает объект, который должен быть зарегистрирован как bean в контексте Spring. В отличие от @Component, @Bean позволяет явно создавать и настраивать bean, например, создавать сторонние объекты или настраивать их параметры.

Пример:

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

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

Итого:

  • @Component — автоматическая регистрация класса как bean при сканировании.
  • @Bean — явное создание bean через метод в конфигурационном классе.