Sobes.tech
Junior — Middle

Kāda ir atšķirība starp @Bean un @Component anotācijām Spring, un kādos gadījumos tās jālieto?

sobes.tech AI

Atbilde no AI

@Component anotācija tiek izmantota, lai automātiski atpazītu un reģistrētu klasi kā Spring-žetonu, izmantojot komponentu skenēšanu (component scanning). Tā tiek tieši piemērota klasei, kas jāpadara par žetonu.

@Bean anotācija tiek piemērota metodē, kas atrodas @Configuration marķētā klasē. Šī metode atgriež objektu, ko Spring reģistrēs kā žetonu.

Galvenās atšķirības:

  • @Component — automātiski atpazīstamas skenēšanas laikā.
  • @Bean — manuāli izveidots žetons konfigurācijas klasē.

Kad lietot:

  • @Component — kad klase pati ir komponenta un var tikt automātiski atrasta.
  • @Bean — kad nepieciešams izveidot žetonu no ārējās klases vai ja nepieciešama sarežģītāka objekta izveides loģika.

Piemērs:

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

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