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
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 toimestaKatsotaanpa, kuinka voimme lisätä riippuvuuden rakentajalla.
fontin kokoinen lateksi
Riippuvuusinjektio setter-menetelmällä
Katsotaanpa kuinka voimme lisätä riippuvuutta setter-menetelmällä.