Sobes.tech
Junior — Middle

Jaka jest różnica między adnotacjami @Bean i @Component w Spring, i w jakich przypadkach należy ich używać?

sobes.tech AI

Odpowiedź od AI

Adnotacja @Component służy do automatycznego wykrywania i rejestrowania klasy jako beana Springa poprzez skanowanie komponentów (component scanning). Jest stosowana bezpośrednio nad klasą, która ma stać się beanem.

Adnotacja @Bean jest stosowana nad metodą w klasie oznaczonej jako @Configuration. Ta metoda zwraca obiekt, który Spring zarejestruje jako bean.

Główne różnice:

  • @Component — dla klas wykrywanych automatycznie przez skanowanie.
  • @Bean — do ręcznego tworzenia beana w klasie konfiguracyjnej.

Kiedy używać:

  • @Component — gdy klasa sama w sobie jest komponentem i może być automatycznie odnaleziona.
  • @Bean — gdy trzeba utworzyć bean z klasy zewnętrznej lub gdy wymagana jest bardziej złożona logika tworzenia obiektu.

Przykład:

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

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