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.
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ørLad 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.