logo

Riippuvuusruiske keväällä

  1. Riippuvuusruiske keväällä
  2. Riippuvuuden haku
  3. Riippuvuusinjektio

Dependency Injection (DI) on suunnittelumalli, joka poistaa riippuvuuden ohjelmointikoodista, jotta sovellusta on helppo hallita ja testata. Dependency Injection tekee ohjelmointikoodimme löyhästi kytkettynä. Ymmärtääksesi DI:n paremmin, ymmärretään ensin riippuvuushaku (DL):

java-merkkijono sisältää

Riippuvuuden haku

Dependency Lookup on lähestymistapa, jossa saamme resurssin kysynnän jälkeen. Resurssin hankkimiseen voi olla useita tapoja, esimerkiksi:

 A obj = new AImpl(); 

Tällä tavalla saamme resurssin (A-luokan ilmentymä) suoraan uudella avainsanalla. Toinen tapa on tehdasmenetelmä:

 A obj = A.getA(); 

Tällä tavalla saamme resurssin (A-luokan ilmentymä) kutsumalla staattista tehdasmetodia getA().

Vaihtoehtoisesti voimme saada resurssin JNDI:ltä (Java Naming Directory Interface) seuraavasti:

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

Resurssin hankkimiseksi resurssin hankkimiseksi voi olla useita tapoja. Katsotaanpa tämän lähestymistavan ongelmaa.

Riippuvuushaun ongelmat

Riippuvuuden hakuun liittyy pääasiassa kaksi ongelmaa.

java merkkijono alimerkkijono
    tiukka kytkentäRiippuvuushakumenetelmä tekee koodista tiukasti kytketyn. Jos resurssia muutetaan, meidän on tehtävä paljon muutoksia koodiin.Ei helppoa testataTämä lähestymistapa aiheuttaa paljon ongelmia testattaessa sovellusta erityisesti musta laatikko -testauksessa.

Riippuvuusinjektio

Dependency Injection on suunnittelumalli, joka poistaa ohjelmien riippuvuuden. Tässä tapauksessa annamme tiedot ulkoisesta lähteestä, kuten XML-tiedostosta. Se tekee koodistamme löyhästi kytkettyä ja helpottaa testaamista. Tässä tapauksessa kirjoitamme koodin seuraavasti:

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

Tällaisessa tapauksessa Address-luokan esiintymän tarjoaa ulkoinen lähde, kuten XML-tiedosto, joko konstruktori- tai asettajamenetelmällä.

Kaksi tapaa suorittaa riippuvuusinjektio Spring-kehyksessä

Kevätkehys tarjoaa kaksi tapaa lisätä riippuvuutta

  • Rakentajan toimesta
  • Setter-menetelmällä

Tulevia aiheita Spring Dependency Injectionissa

Riippuvuusinjektio rakentajan toimesta

Katsotaanpa, kuinka voimme lisätä riippuvuuden rakentajalla.

fontin kokoinen lateksi

Riippuvuusinjektio setter-menetelmällä

Katsotaanpa kuinka voimme lisätä riippuvuutta setter-menetelmällä.