Dependency Injection (DI) és un patró de disseny que elimina la dependència del codi de programació perquè sigui fàcil de gestionar i provar l'aplicació. Dependency Injection fa que el nostre codi de programació estigui acoblat de manera lliure. Per entendre millor el DI, primer entenem la cerca de dependència (DL):
índex de llista
Cerca de dependència
La cerca de dependència és un enfocament on obtenim el recurs després de la demanda. Hi pot haver diverses maneres d'obtenir el recurs, per exemple:
A obj = new AImpl();
D'aquesta manera, obtenim el recurs (instància de la classe A) directament per paraula clau nova. Una altra manera és el mètode de fàbrica:
A obj = A.getA();
D'aquesta manera, obtenim el recurs (instància de classe A) cridant al mètode de fàbrica estàtic getA().
Alternativament, podem obtenir el recurs mitjançant JNDI (Java Naming Directory Interface) com:
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A');
Hi pot haver diverses maneres d'obtenir el recurs per obtenir el recurs. Vegem el problema en aquest plantejament.
Problemes de cerca de dependència
Hi ha principalment dos problemes de cerca de dependències.
pausa java
Injecció de dependència
La injecció de dependències és un patró de disseny que elimina la dependència dels programes. En aquest cas, proporcionem la informació de la font externa, com ara un fitxer XML. Fa que el nostre codi estigui ben acoblat i sigui més fàcil de provar. En aquest cas, escrivim el codi com:
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
En aquest cas, la instància de la classe Address la proporciona una font externa, com ara un fitxer XML, ja sigui per mètode constructor o setter.
Dues maneres de realitzar la injecció de dependències al marc Spring
El marc Spring ofereix dues maneres d'injectar dependència
- Per Constructor
- Mitjançant el mètode Setter
Pròxims temes a Spring Dependency Injection
Injecció de dependència per constructorVegem com podem injectar dependència per constructor.
número de l'alfabet
Injecció de dependència per mètode setter
Vegem com podem injectar dependència pel mètode setter.