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

Чем отличается аннотация @Component от создания бина в Spring?

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

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

sobes.tech AI

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

Создание бина в Spring можно делать и явно, например, через метод с аннотацией @Bean в классе конфигурации. Такой способ более явный и даёт полный контроль над созданием и конфигурацией бина.

Основные отличия:

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

Пример с @Component:

@Component
public class MyService {
    // ...
}

Пример с @Bean:

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