Peut-on injecter des dépendances autre que par le constructeur?
sobes.tech IA
Réponse de l'IA
Oui, c'est possible. En plus de l'injection de dépendances via le constructeur (injection de dépendances basée sur le constructeur), voici les principales méthodes dans Spring Framework :
-
Injection via setter (injection de dépendances basée sur le setter) : Les dépendances sont injectées via des méthodes publiques setter.
public class MyClass { private Dependency dependency; public void setDependency(Dependency dependency) { this.dependency = dependency; } // ... autres méthodes } -
Injection via champ (injection de dépendances basée sur le champ) : Les dépendances sont injectées directement dans les champs de la classe à l'aide d'annotations (par exemple,
@Autowired). Cette méthode est la plus courante, mais présente certains inconvénients (par exemple, difficulté pour les tests unitaires et dépendance cachée).public class MyClass { @Autowired private Dependency dependency; // ... autres méthodes } -
Injection via méthodes (injection de dépendances basée sur la méthode) : Méthode moins courante, où les dépendances sont injectées via toute méthode annotée avec l'annotation appropriée (
@Autowired).public class MyClass { private Dependency dependency; @Autowired public void configure(Dependency dependency) { this.dependency = dependency; } // ... autres méthodes }
Le choix de la méthode dépend de la situation spécifique et des préférences. L'injection via le constructeur est généralement considérée comme préférable, car elle garantit que l'objet sera créé avec toutes les dépendances nécessaires et facilite les tests. Cependant, l'injection via les champs ou les setters peut être plus pratique pour les dépendances optionnelles ou lors de la travail avec du code legacy.