logo

Avhengighetsinjeksjon om våren

  1. Avhengighetsinjeksjon om våren
  2. Avhengighetsoppslag
  3. Avhengighetsinjeksjon

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.

    tett koblingTilnærmingen til avhengighetsoppslag gjør koden tett koblet. Hvis ressursen endres, må vi utføre mye modifikasjon i koden.Ikke lett å testeDenne tilnærmingen skaper mange problemer mens du tester applikasjonen, spesielt i black box-testing.

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ør

La oss se hvordan vi kan injisere avhengighet etter konstruktør.


Avhengighet Injeksjon etter settermetode

La oss se hvordan vi kan injisere avhengighet etter settermetode.