Sobes.tech
Junior — Middle

Care este diferența dintre adnotările @Bean și @Component în Spring, și în ce cazuri trebuie utilizate?

sobes.tech AI

Răspuns de la AI

A adnotarea @Component este utilizată pentru detectarea și înregistrarea automată a clasei ca bean Spring prin scanarea componentelor (component scanning). Se aplică direct peste clasa care trebuie să devină bean.

Adnotarea @Bean se aplică peste o metodă dintr-o clasă marcată ca @Configuration. Această metodă returnează un obiect pe care Spring îl va înregistra ca bean.

Diferențele principale:

  • @Component — pentru clase detectate automat prin scanare.
  • @Bean — pentru crearea manuală a unui bean într-o clasă de configurare.

Când să folosiți:

  • @Component — când clasa în sine este un component și poate fi găsit automat.
  • @Bean — când trebuie creat un bean dintr-o clasă externă sau când este nevoie de o logică mai complexă pentru crearea obiectului.

Exemplu:

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

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