Sobes.tech
Junior — Middle

Quelle est la différence entre les annotations @Bean et @Component dans Spring, et dans quels cas doivent-elles être utilisées?

sobes.tech IA

Réponse de l'IA

L'annotation @Component est utilisée pour détecter et enregistrer automatiquement la classe en tant que bean Spring via la détection de composants (component scanning). Elle est appliquée directement sur la classe qui doit devenir un bean.

L'annotation @Bean est appliquée sur une méthode dans une classe marquée comme configuration (@Configuration). Cette méthode retourne un objet que Spring enregistrera en tant que bean.

Principales différences :

  • @Component — pour les classes détectées automatiquement via la détection.
  • @Bean — pour créer manuellement un bean dans une classe de configuration.

Quand l'utiliser :

  • @Component — lorsque la classe elle-même est un composant pouvant être trouvé automatiquement.
  • @Bean — lorsque vous devez créer un bean à partir d'une classe externe ou lorsque vous avez besoin d'une logique plus complexe pour créer l'objet.

Exemple :

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

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