Sobes.tech
Junior — Middle

Koja je razlika između anotacija @Bean i @Component u Springu, i u kojim slučajevima ih treba koristiti?

sobes.tech АИ

Одговор од АИ

Oznaka @Component koristi se za automatsko prepoznavanje i registraciju klase kao Spring-bina putem skeniranja komponenti (component scanning). Direktno se primenjuje na klasu koja treba da postane bin.

Oznaka @Bean primenjuje se na metodu unutar klase označene kao @Configuration. Ova metoda vraća objekat koji će Spring registrovati kao bin.

Glavne razlike:

  • @Component — za klase koje se automatski prepoznaju putem skeniranja.
  • @Bean — za ručno kreiranje beana u konfiguracionoj klasi.

Kada koristiti:

  • @Component — kada je klasa sama po sebi komponenta i može biti automatski pronađena.
  • @Bean — kada je potrebno kreirati bin iz spoljne klase ili kada je potrebna složenija logika za kreiranje objekta.

Primer:

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

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