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