Kaj je injekcija odvisnosti? - Vedeti, kako izvesti vbrizganje odvisnosti

Ta članek o tem, kaj je vbrizgavanje odvisnosti, je izčrpen vodnik za vbrizgavanje odvisnosti s praktičnim delovanjem v spomladanskem zagonu.

V svetu, kjer vsak dan delamo s programskimi jeziki, vsi navadno iščemo metode in trike, s katerimi si olajšamo življenje. No, Dependency Injection je ena takih tehnik, katere cilj je enostavno pomagati kodi razvijalca z zagotavljanjem odvisnosti drugega predmeta. V tem članku o tem, kaj je vbrizgavanje odvisnosti, vam bom pomagal podrobno razumeti to tehniko.

V tem članku bodo obravnavane naslednje teme:





Začnimo s tem člankom.

Kaj je injekcija odvisnosti?

Injekcija odvisnosti je sposobnost predmeta, da dobavi odvisnosti drugega predmeta.



Prepričan sem, da z zgornjo tehnično definicijo morda niste ničesar razumeli. Torej, naj vam razjasnim zmedo.

Kaj slišiš, ko slišiš izraz odvisnost?

Očitno je, da se nekaj zanaša na nekaj drugega za podporo, kajne?



No, to je enako, tudi v primeru programiranja.

Odvisnost pri programiranju je pristop, pri katerem razred uporablja posebne funkcije drugega razreda. Torej, na primer, če upoštevate dva razreda A in B in rečete, da razred A uporablja funkcije razreda B, potem to pomeni, da ima razred A odvisnost od razreda B. Zdaj, če kodirate v Javi, morate vedeti to morašustvarite primerek razreda B, preden objekte uporablja razred A.

Vrste razredov - Kaj je vbrizgavanje odvisnosti - Edureka

Torej, če moram zdaj za vas definirati vbrizganje odvisnosti, potem se postopek ustvarjanja predmeta za nek drug razred in dovoli razredu, ki neposredno uporablja odvisnost, imenuje vbrizgavanje odvisnosti. Vključuje predvsem tri razrede:

  • Razred stranke: To je odvisen razred in je odvisen od razreda storitve.

  • Servisni razred: Ta razred nudi storitev odjemalskemu razredu.

  • Razred injektorja: Ta razred je odgovoren za vbrizganje predmeta storitvenega razreda v odjemalski razred

Zdaj, ko ste razumeli, kaj je vbrizgavanje odvisnosti, naj vas naslednjič popeljem skozi načelo, na katerem temelji vbrizgavanje odvisnosti.

Inverzija nadzora

Kot sem že omenil, je Inverzija nadzora načelo, na podlagi katerega je narejena injekcija odvisnosti. Kot že ime pove, se Inverzija nadzora v osnovi uporablja za preusmerjanje različnih vrst dodatnih odgovornosti razreda in ne za glavno odgovornost.

Če vam moram razložiti preprosteje, potem razmislite o primeru, ko znate kuhati. V skladu z načelom IoC lahko krmiljenje obrnete, tako da namesto kuhanja hrane lahko samo naročite od zunaj, pri čemer hrano prejmete na svojem pragu. Tako se proces hrane, ki vam jo dostavijo na vašem pragu, imenuje Inverzija nadzora.

Ni vam treba kuhati sami, temveč lahko hrano naročite in pustite, da vam jo dostavi izvršilni direktor. Na ta način vam ni treba skrbeti za dodatne odgovornosti in se samo osredotočiti na glavno delo.

Zdaj, ko poznate načelo vbrizgavanja odvisnosti, naj vam predstavim tipe vbrizgavanja odvisnosti.

Vrste vbrizgavanja odvisnosti

Obstajajo predvsem tri vrste vbrizgavanja odvisnosti:

  • Vbrizgavanje konstruktorja: Pri tej vrsti vbrizgavanja injektor zagotavlja odvisnost prek konstruktorja razreda odjemalca.

  • Setter vbrizgavanje / vbrizgavanje lastnosti: Pri tej vrsti vbrizgavanja injektorska metoda vbrizga odvisnost od nastavitvene metode, ki jo izpostavi stranka.

  • Vbrizg vmesnika: Pri tej vrsti vbrizgavanja injektor uporablja vmesnik za zagotavljanje odvisnosti od odjemalskega razreda. Stranke morajo implementirati vmesnik, ki bo razkril ametoda postavljalcakisprejema odvisnost.

Do zdaj upam, da ste razumeli dejstvo, da je vbrizgavanje odvisnosti odgovorno za ustvarjanje predmetov, razumevanje, kateri razredi zahtevajo te predmete in na koncu tem razredom zagotovite predmete. Torej, na tej opombi si poglejmo še naprej prednosti vbrizgavanja odvisnosti.

Prednosti vbrizgavanja odvisnosti

Preden naštejem prednosti vbrizgavanja odvisnosti, naj vam razložim potrebo po tej injekciji na industrijski ravni, da boste lažje razumeli koristi.

Razmislite o scenariju, v katerem imate razred e-pošte, katerega izključna odgovornost je skrbeti za prejeta e-poštna sporočila. Zdaj bodo v tem razredu predmeti, kot so “Na e-poštni naslov”, “Z e-poštnega naslova”, “Zadeva in telo e-pošte”.

Če želi podjetje shraniti besedilna in zvočna sporočila, ali mislite, da lahko ta razred sporočilo shrani?

No, odgovor je ne?

To pa zato, ker razred e-pošte ne more obdelovati parametrov besedila in zvočnih sporočil. V takih primerih boste morali pouk poustvariti. Zdaj je poustvarjanje pouka precej okorno delo, še posebej, če ga morate redno opravljati. Namesto tega, če uporabljate vbrizgavanje odvisnosti, lahko predmete spremenite med izvajanjem. Torej vam na ta način ni treba poustvariti razreda, ki vam še naprej pomaga na veliko načinov.

Torej, če moram povzeti prednosti vbrizgavanja odvisnosti, potem so naslednje prednosti:

Torej, zdaj, ko poznate prednosti vbrizgavanja odvisnosti, pojdimo naprej in si oglejte, kako izvajati vbrizgavanje odvisnosti s pomočjo Spring Boot.

Kako implementirati DI z uporabo Spring Boot?

Korak 1: Odprite svoj Eclipse IDE in ustvarite a Aplikacija Spring Boot z desnim klikom in izbiro Projekt Spring Starter . Nato navedite ime projekta in kliknite na Končaj .

Če želite dobiti Spring Starter Project, morate namestiti Spring Tool Suite s tržnice Eclipse. Če Spring Too Suite ni nameščen, se lahko obrnete na moj članek o .

Samodejno boste videli, da je datoteka aplikacije ustvarjena kot spodaj.

2. korak: Nato ustvarite razred v istem paketu. Če želite to narediti, z desno miškino tipko kliknite datoteko -> izberite Razred in omeniti ime razreda. Nato kliknite Končaj . To bo ustvarilo Razred mapa. Tu sem ustvaril razred za stranke. Glejte spodaj.

3. korak: Po tem vnesite nekaj lastnosti za razred. Torej, recimo, vključujemo ID stranke, ime stranke in Ime tečaja. Spodaj omenite kodo.

paket com.example.demo // ime paketa javni razred Stranke {private int custid private String custname private String coursename}

Korak 3.1: Ko končate s tem, morate ustvari metode Getter in Setter za te lastnosti. Če želite to narediti, izberite te lastnosti in z desno miškino tipko kliknite. Nato izberite Vir -> Ustvari metode Getter in Setter.

Vaša koda do zdaj naj bo naslednja:

paket com.example.demo javni razred Stranke {private int custid private String custname private String coursename public int getCustid () {return custid} public void setCustid (int custid) {this.custid = custid} public String getCustname () {return custname } public void setCustname (String custname) {this.custname = custname} public String getCoursename () {return coursename} javna void setCoursename (Stringname) {this.coursename = coursename}}

Zdaj razmislite o scenariju, v katerem morate ustvariti objekt za stranke in tega ne želite storiti ročno. V takem scenariju boste morali nato uporabiti vbrizganje odvisnosti, da boste predmete dobili kadar koli to želite.

Nato si poglejmo, kako lahko to dosežemo.

4. korak: Najprej spremenite teči črta v datoteka razreda programa na naslednje:

ConfigurableApplicationContext context = SpringApplication.run (DemoApplication.class, args)

Opomba: Če se prikaže napaka, uvozite naslednje:

import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.context.ConfigurableApplicationContext

Ta zgornja vrstica kode bo vrnila predmet v času izvedbe. Zdaj dodajte naslednjo kodo v aplikacijsko datoteko.

stranke c = context.getBean (kupci.razred)

Zgornja vrstica bo prevajalniku sporočila, naj vrne predmet razreda kupca. Glejte spodaj.

Korak 4.1: Zdaj, če želite preveriti, ali deluje ali ne, vi lahko vrnete v razred stranke in dodajte metodo na naslednji način:

javni void display () {System.out.println ('Predmet je bil uspešno vrnjen')}

Ta metoda bo ob uspešnem izvajanju prikazala izhodno sporočilo »Objekt je bil uspešno vrnjen«.

Korak 4.2: Nato se morate vrniti na prijavno datoteko in omeniti naslednje:

c.display ()

S tem pokličete predmet razreda Stranke s sklicem na način prikaza. Za kodo razreda Application do zdaj glejte spodnjo sliko:

Zdaj, če izvedete projekt, boste videli izjema Ni ustreznega zrna vrste . Razlog za to je, da razred kupcev, ki ste ga definirali, ni Spring Bean, torej ni objekt Spring. Glejte spodaj.

Korak 4.3: Torej, da to sporočimo Spring Containerju, potrebujemo predmet razreda kupcev. Če želite to narediti, morate omeniti Pripis komponente , v razredu Stranka. Koda v razredu Stranke mora biti naslednja:

paket com.example.demo import org.springframework.stereotype.Component @Component javni razred Stranke {private int custid private String custname private String coursename public int getCustid () {return custid} public void setCustid (int custid) {this.custid = custid} javni niz getCustname () {return custname} javna praznina setCustname (String custname) {this.custname = custname} javni niz getCoursename () {return coursename} javna void setCoursename (niz predmeta ime) {this.coursename = coursename} javna praznina display () {System.out.println ('Predmet je bil uspešno vrnjen')}}

Potem, ko omenjate stranke c = context.getBean (kupci.razred) prevajalnik bo preveril, ali je v posodi na voljo fižol stranke.

Če je Bean na voljo, potem vzmet Spring vbrizga predmet stranke v vašo aplikacijo. Torej, v bistvu ta objekt ustvarja ogrodje Spring, ki ga je mogoče nadalje uporabljati v aplikaciji.

Torej, če zdaj izvedem ta projekt, boste videli rezultat, ki ga je objekt uspešno vrnil. Glejte spodaj.

V bistvu lahko tako izvedete vbrizgavanje odvisnosti.

Primer: vbrizgavanje odvisnosti s samodejnim povezovanjem opomb

Upam, da ste razumeli, kako deluje vbrizgavanje odvisnosti v Spring Boot. Zdaj pa razširimo ta primer in nadalje poglejmo, kako je razred, odvisen od drugega razreda, uporabljal funkcije tega razreda v Spring Boot-u.

Korak 1: Ustvari novo datoteka predavanja , znova z desno miškino tipko kliknite paket in z izbiro Novo -> Razred. Zdaj omenite ime predavanja kot spodaj in kliknite na Končaj.

2. korak: Nato vnesite nekaj lastnosti za razred. Torej, recimo, vključujemo TechID, Techname. Spodaj omenite kodo.

java spremeni dvojno v int
paket com.example.demo javni razred Technologies {private int techid private String techname}

Korak 2.1: Ko končate s tem, ustvarite Getter in Setter metode za te lastnosti z desnim klikom na datoteko in nato izberite Vir -> Ustvari metode Getter in Setter.

3. korak: Zdaj moramo reči, da moramo ustvariti metodo, ki natisne Uspešno “. Če želite omeniti kodo:

javna void tech () {System.out.println ('Uspešno')}

Vaša koda do zdaj bi morala izgledati spodaj:

paket com.example.demo javni razred Technologies {private int techid private String techname public int getTechid () {return techid} javna praznina setTechid (int techid) {this.techid = techid} javni niz getTechname () {return techname} javna praznina setTechname (niz tehničnega imena) {this.techname = techname} javna void tehnologija () {System.out.println ('Uspešno')}}

4. korak: Zdaj pa pokličite metoda tech () v razred kupcev , morate ustvariti objekt iz razreda tehnologij. Torej omenite naslednjo vrstico kode v razredu kupcev:

zasebni Technologies techdetail

Korak 4.1: Ko končate s tem, ustvarite Getter in Setter metode za te lastnosti do z desno miškino tipko kliknite datoteko in nato izberite Vir -> Ustvari metode Getter in Setter.

5. korak: Nato uporabite metoda tech () , morate omeniti techdetail.tech () pod način prikaza razreda kupcev . Prav tako se prepričajte, da je predmet tehnične podrobnosti primeren primer Pripis komponente ali je Razred tehnologij. Glejte spodaj.

Zdaj, ko izvedete ta projekt, boste videli Izjema za ničelni kazalec . To je zato, ker zdaj Razred kupcev je odvisen od razreda Technologies, vendar ne pozna obstoja razreda Technologies .

Če želite stranki omogočiti prepoznavanje razreda Technologies, morate vstaviti @Autowired pripis v razredu Stranke. Vaša končna koda razreda kupcev mora biti naslednja:

paket com.example.demo import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Component @Component javni razred Stranke {private int custid private String custname private String coursename @Autowired private Technologies techdetail public Technologies getTechdetail ( ) {return techdetail} public void setTechdetail (Technologies techdetail) {this.techdetail = techdetail} public int getCustid () {return custid} public void setCustid (int custid) {this.custid = custid} public String getCustname () {return custname } public void setCustname (String custname) {this.custname = custname} public String getCoursename () {return coursename} javna void setCoursename (String ime predmeta) {this.coursename = coursename} public void display () {System.out.println ( 'Predmet je bil uspešno vrnjen') techdetail.tech ()}}

Ko zaženete te datoteke, boste videli izpise kot Object Returned Successfully and Successful, kar pomeni, da je naša odvisnost razredov izpolnjena. Glejte spodaj.

Zdaj, ko ste končali s člankom, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu.

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje tega “Kaj je vbrizgavanje odvisnosti? ' Članek in se vam bomo javili v najkrajšem možnem času.