Sobes.tech
Junior — Middle
97

Spring компоненттерін конфигурациялау контекстінде @Bean және @Component аннотацияларын қолданудың айырмашылығы неде?

Сұралған компаниялар
СБЕРСБЕР

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 — явное создание бина через метод в конфигурационном классе.