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();
}
}