Sobes.tech
Junior — Middle

Kokia yra skirtumas tarp @Bean ir @Component anotacijų Spring, ir kokiais atvejais jas naudoti?

sobes.tech AI

Atsakymas iš AI

@Component žymuo naudojamas automatiškai aptikti ir registruoti klasę kaip Spring-bieną per komponentų nuskaitymą (component scanning). Jis taikomas tiesiogiai klasei, kuri turi tapti biu.

@Bean žymuo taikomas metodui, esančiam @Configuration pažymėtame klasėje. Šis metodas grąžina objektą, kurį Spring įregistruos kaip biu.

Pagrindiniai skirtumai:

  • @Component — automatiškai aptinkami skenavimo būdu.
  • @Bean — rankiniu būdu sukuriamas biu konfigūracijos klasėje.

Kada naudoti:

  • @Component — kai klasė pati yra komponentas ir gali būti automatiškai rasta.
  • @Bean — kai reikia sukurti biu iš išorinės klasės arba kai reikalinga sudėtingesnė objekto kūrimo logika.

Pavyzdys:

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

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