L'injection de dépendances (DI) est un modèle de conception qui supprime la dépendance du code de programmation afin de faciliter la gestion et le test de l'application. L'injection de dépendances rend notre code de programmation faiblement couplé. Pour mieux comprendre le DI, comprenons d'abord la recherche de dépendances (DL) :
Recherche de dépendance
La recherche de dépendances est une approche dans laquelle nous obtenons la ressource après la demande. Il peut y avoir différentes manières d'obtenir la ressource, par exemple :
A obj = new AImpl();
De cette manière, nous obtenons la ressource (instance de classe A) directement par le nouveau mot-clé. Une autre méthode est la méthode d'usine :
A obj = A.getA();
De cette façon, nous obtenons la ressource (instance de la classe A) en appelant la méthode de fabrique statique getA().
Alternativement, nous pouvons obtenir la ressource par JNDI (Java Naming Directory Interface) comme :
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A');
Il peut y avoir différentes manières d'obtenir la ressource pour obtenir la ressource. Voyons le problème dans cette approche.
Problèmes de recherche de dépendances
Il existe principalement deux problèmes de recherche de dépendances.
Injection de dépendance
L'injection de dépendances est un modèle de conception qui supprime la dépendance des programmes. Dans ce cas, nous fournissons les informations provenant d'une source externe telle qu'un fichier XML. Cela rend notre code faiblement couplé et plus facile à tester. Dans ce cas, nous écrivons le code sous la forme :
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
Dans ce cas, l'instance de la classe Address est fournie par une source externe telle qu'un fichier XML, soit par le constructeur, soit par la méthode setter.
Deux façons d'effectuer l'injection de dépendances dans le framework Spring
Le framework Spring propose deux façons d'injecter des dépendances
- Par constructeur
- Par la méthode Setter
Sujets à venir dans Spring Dependency Injection
Injection de dépendances par constructeurVoyons comment injecter une dépendance par constructeur.
Injection de dépendances par méthode setter
Voyons comment nous pouvons injecter une dépendance par la méthode setter.