logo

Afhængighedsindsprøjtning i foråret

  1. Afhængighedsindsprøjtning i foråret
  2. Afhængighedsopslag
  3. Afhængighedsindsprøjtning

Dependency Injection (DI) er et designmønster, der fjerner afhængigheden fra programmeringskoden, så det kan være nemt at administrere og teste applikationen. Dependency Injection gør vores programmeringskode løst koblet. For at forstå DI bedre, lad os først forstå afhængighedsopslaget (DL):

Afhængighedsopslag

The Dependency Lookup er en tilgang, hvor vi får ressourcen efter efterspørgsel. Der kan være forskellige måder at få ressourcen på, f.eks.:

 A obj = new AImpl(); 

På denne måde får vi ressourcen (forekomst af A-klasse) direkte ved nyt nøgleord. En anden måde er fabriksmetoden:

 A obj = A.getA(); 

På denne måde får vi ressourcen (forekomst af A-klasse) ved at kalde den statiske fabriksmetode getA().

Alternativt kan vi få ressourcen af ​​JNDI (Java Naming Directory Interface) som:

 Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A'); 

Der kan være forskellige måder at få ressourcen til at skaffe ressourcen. Lad os se problemet i denne tilgang.

Problemer med afhængighedsopslag

Der er hovedsageligt to problemer med afhængighedsopslag.

    tæt koblingAfhængighedsopslagstilgangen gør koden tæt koblet. Hvis ressourcen ændres, skal vi udføre en masse ændringer i koden.Ikke let at testeDenne tilgang skaber en masse problemer, mens du tester applikationen, især i black box-test.

Afhængighedsindsprøjtning

Dependency Injection er et designmønster, der fjerner programmernes afhængighed. I sådanne tilfælde leverer vi oplysningerne fra den eksterne kilde, såsom XML-fil. Det gør vores kode løst koblet og nemmere at teste. I sådanne tilfælde skriver vi koden som:

 class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } } 

I sådanne tilfælde leveres adresseklassen forekomst af ekstern kilde, såsom XML-fil, enten ved konstruktør eller setter-metode.

To måder at udføre Dependency Injection in Spring framework på

Forårsramme giver to måder at tilføre afhængighed på

  • Af konstruktør
  • Efter Setter metode

Kommende emner i Spring Dependency Injection

Afhængighed Injektion af konstruktør

Lad os se, hvordan vi kan injicere afhængighed efter konstruktør.


Afhængighed Injektion efter setter-metode

Lad os se, hvordan vi kan injicere afhængighed ved hjælp af setter-metoden.