Sobes.tech
Junior — Middle

Каква е разликата между анотациите @Bean и @Component в Spring, и в кои случаи трябва да се използват?

sobes.tech AI

Отговор от AI

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

Анотацията @Bean се прилага върху метод в клас, маркиран като @Configuration. Този метод връща обект, който Spring ще регистрира като бийн.

Основни разлики:

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

Кога да се използва:

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

Пример:

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

@Configuration
public class AppConfig {
    @Bean
    public MyRepository myRepository() {
        return new MyRepository();
    }
}