Sobes.tech
Back to questions
Junior — Middle
63

Как отличить аннотацию @Component от @Bean в контексте Spring?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

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

@Bean — это аннотация, которая применяется к методу внутри класса, помеченного как @Configuration. Метод с @Bean возвращает объект, который будет зарегистрирован в контексте Spring как бин. Это более явный способ создания бина, когда нужно контролировать процесс создания или использовать сторонние классы.

Пример:

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

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

Итого:

  • @Component — аннотирует класс, бин создаётся автоматически при сканировании.
  • @Bean — аннотирует метод, бин создаётся явно через возвращаемый объект метода.