Sobes.tech
Junior — Middle

Milline on erinevus @Bean ja @Component annotatsioonide vahel Springis ning millal neid kasutada?

sobes.tech AI

Vastus AI-lt

@Component märgis kasutatakse klassi automaatseks tuvastamiseks ja registreerimiseks Spring-biinina komponendiskaneerimise (component scanning) kaudu. See rakendub otse klassi kohal, mis peab muutuma biiniks.

@Bean märgis rakendub meetodile, mis asub märgistatud @Configuration-i klassis. See meetod tagastab objekti, mille Spring registreerib biinina.

Peamised erinevused:

  • @Component — automaatselt skaneerimise teel tuvastatud klasside jaoks.
  • @Bean — käsitsi loodud biin konfiguratsiooniklassis.

Millal kasutada:

  • @Component — kui klass ise on komponent ja seda saab automaatselt leida.
  • @Bean — kui tuleb luua biin välisest klassist või kui on vaja keerulisemat objekti loomise loogikat.

Näide:

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

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