Junior — Middle
Qual è la differenza tra le annotazioni @Bean e @Component in Spring, e in quali casi devono essere usate?
sobes.tech AI
Risposta dell'AI
L'annotazione @Component viene utilizzata per il rilevamento e la registrazione automatica della classe come bean di Spring tramite la scansione dei componenti (component scanning). Viene applicata direttamente sulla classe che deve diventare un bean.
L'annotazione @Bean viene applicata a un metodo all'interno di una classe contrassegnata come @Configuration. Questo metodo restituisce un oggetto che Spring registrerà come bean.
Principali differenze:
@Component— per classi rilevate automaticamente tramite scansione.@Bean— per creare manualmente un bean in una classe di configurazione.
Quando usarlo:
@Component— quando la classe stessa è un componente che può essere trovato automaticamente.@Bean— quando è necessario creare un bean da una classe esterna o quando si richiede una logica più complessa per la creazione dell'oggetto.
Esempio:
@Component
public class MyService {
// ...
}
@Configuration
public class AppConfig {
@Bean
public MyRepository myRepository() {
return new MyRepository();
}
}