Sobes.tech
Junior — Middle

Jaký je rozdíl mezi anotacemi @Bean a @Component ve Springu, a kdy je použít?

sobes.tech AI

Odpověď od AI

Anotace @Component se používá k automatickému rozpoznání a registraci třídy jako Spring-bean prostřednictvím skenování komponent (component scanning). Přímo se aplikuje na třídu, která má být beanem.

Anotace @Bean se aplikuje na metodu uvnitř třídy označené jako @Configuration. Tato metoda vrací objekt, který Spring zaregistruje jako bean.

Hlavní rozdíly:

  • @Component — pro třídy, které jsou automaticky rozpoznány skenováním.
  • @Bean — pro ruční vytvoření beanu v konfigurační třídě.

Kdy používat:

  • @Component — když je třída sama o sobě komponentou a může být automaticky nalezena.
  • @Bean — když je potřeba vytvořit bean z externí třídy nebo když je požadována složitější logika tvorby objektu.

Příklad:

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

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