logo

Injecció de dependència a la primavera

  1. Injecció de dependència a la primavera
  2. Cerca de dependència
  3. Injecció de dependència

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
    acoblament estretL'enfocament de cerca de dependències fa que el codi estigui estretament acoblat. Si es canvia el recurs, hem de realitzar moltes modificacions al codi.No és fàcil de provarAquest enfocament crea molts problemes durant la prova de l'aplicació, especialment en les proves de caixa negra.

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 constructor

Vegem 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.