Dependency Injection (DI) er et designmønster som fjerner avhengigheten fra programmeringskoden slik at det kan være enkelt å administrere og teste applikasjonen. Dependency Injection gjør programmeringskoden vår løst koblet. For å forstå DI bedre, la oss først forstå Dependency Lookup (DL):
Avhengighetsoppslag
The Dependency Lookup er en tilnærming der vi får ressursen etter etterspørsel. Det kan være forskjellige måter å få ressursen på, for eksempel:
A obj = new AImpl();
På denne måten får vi ressursen (forekomsten av A-klassen) direkte av nytt nøkkelord. En annen måte er fabrikkmetoden:
A obj = A.getA();
På denne måten får vi ressursen (forekomsten av A-klassen) ved å kalle den statiske fabrikkmetoden getA().
Alternativt kan vi få ressursen av JNDI (Java Naming Directory Interface) som:
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A');
Det kan være ulike måter å få ressursen til å skaffe ressursen. La oss se problemet i denne tilnærmingen.
Problemer med avhengighetsoppslag
Det er hovedsakelig to problemer med avhengighetsoppslag.
Avhengighetsinjeksjon
Dependency Injection er et designmønster som fjerner avhengigheten til programmene. I slike tilfeller gir vi informasjonen fra den eksterne kilden som XML-fil. Det gjør koden vår løst koblet og enklere å teste. I slike tilfeller skriver vi koden som:
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
I slike tilfeller leveres adresseklassen forekomst av ekstern kilde som XML-fil, enten ved konstruktør eller settermetode.
To måter å utføre Dependency Injection in Spring-rammeverket på
Springramme gir to måter å injisere avhengighet på
- Av konstruktør
- Etter Setter-metoden
Kommende emner i Spring Dependency Injection
Avhengighet Injeksjon av konstruktørLa oss se hvordan vi kan injisere avhengighet etter konstruktør.
Avhengighet Injeksjon etter settermetode
La oss se hvordan vi kan injisere avhengighet etter settermetode.