Mis on sõltuvuse süstimine? - Tea, kuidas rakendada sõltuvuse süstimist

See artikkel, mis on sõltuvuse süstimine, on põhjalik juhend sõltuvuse süstimiseks koos käed sisse lülitatud kevadel.

Maailmas, kus töötame igapäevaselt programmeerimiskeeltega, kipuvad kõik meie elu lihtsustamiseks otsima meetodeid ja nippe. Noh, sõltuvuse süstimine on üks sellistest tehnikatest, mille eesmärk on hõlpsasti aidata arendaja koodi, pakkudes teise objekti sõltuvusi. Selles artiklis, mis on sõltuvuse süstimine, aitan teil seda tehnikat üksikasjalikult mõista.



Selles artiklis käsitletakse järgmisi teemasid:



Alustame selle artikliga.

Mis on sõltuvuse süstimine?

Sõltuvuse süstimine on objekti võime varustada teise objekti sõltuvusi.



Nüüd olen üsna kindel, et te ei pruugi ülaltoodud tehnilise määratluse põhjal midagi aru saada. Nii et lubage mul teie jaoks segadus kõrvaldada.

Mis teie mõtet sõltuvus kuuldes pähe tuleb?

Ilmselt on midagi toetust millelegi muule, eks?



Noh, see on sama ka programmeerimise puhul.

Sõltuvus programmeerimises on lähenemine, kus klass kasutab teise klassi konkreetseid funktsioone. Nii et näiteks kui arvestada kahte klassi A ja B ning öelda, et klass A kasutab klassi B funktsioone, siis tähendab see, et klassil A on sõltuvus klassist B. Kui nüüd kodeerite Java-s, peate teadma seda peate tegemalooge klassi B eksemplar enne, kui klass A objekte kasutab.

Klasside tüübid - mis on sõltuvuse süstimine - Edureka

Niisiis, kui ma pean nüüd määratlema teie jaoks sõltuvuse süstimise, nimetatakse objekti loomise protsessi mõnele teisele klassile ja klassi laskmist sõltuvust kasutades sõltuvuse süstimiseks. Sellel on peamiselt kolm klassi:

  • Kliendiklass: See on sõltuv klass ja sõltub teenuse klassist.

  • Teenindusklass: See klass pakub kliendiklassile teenust.

  • Pihusti klass: See klass vastutab teenuseklassi objekti kliendiklassi sisestamise eest

Nüüd, kui olete aru saanud, mis on sõltuvuse süstimine, lubage mul järgmisena läbi viia põhimõte, millel sõltuvuse süstimine põhineb.

Kontrolli inversioon

Nagu ma eespool mainisin, on juhtimise ümberpööramine põhimõte, mille põhjal tehakse sõltuvuse süstimine. Nagu nimigi ütleb, kasutatakse juhtimise inversiooni põhimõtteliselt klassi erinevat tüüpi lisakohustuste ümberpööramiseks, mitte põhivastutuseks.

Kui pean teid selgitama lihtsamalt, siis kaaluge ühte näidet, kus teil on võimalus süüa teha. Vastavalt IoC põhimõttele saate juhtimise ümber pöörata, nii et toidu valmistamise asemel saate lihtsalt tellida väljastpoolt, kus saate toitu oma ukse ees. Seega nimetatakse teie kodulävel toimetatud toidu protsessi juhtimise inversiooniks.

Te ei pea ise süüa tegema, selle asemel võite toidu tellida ja lasta kohaletoimetamise juhil toitu teile kohale toimetada. Nii ei pea te hoolitsema lisakohustuste eest ja keskenduma lihtsalt põhitööle.

Nüüd, kui teate sõltuvuse süstimise põhimõtet, lubage mul viia teid läbi sõltuvuse süstimise tüübid.

Sõltuvuse süstimise tüübid

Sõltuvuse süstimist on peamiselt kolme tüüpi:

  • Konstruktori süstimine: Seda tüüpi süstimisel varustab injektor sõltuvust kliendiklassi konstruktori kaudu.

  • Setteri süstimine / vara süstimine: Seda tüüpi süstimisel süstib injektorimeetod sõltuvust setter-meetodist, mille klient kokku puutub.

  • Liidese süstimine: Seda tüüpi süstimisel kasutab injektor liidese abil kliendiklassi sõltuvust. Kliendid peavad rakendama liidese, mis paljastab asetter meetodmisaktsepteerib sõltuvust.

Siiani loodan, et olete aru saanud tõsiasjast, et sõltuvuse süstimine vastutab objektide loomise eest, mõistab, millistes klassides neid objekte vaja on, ja lõpuks varustate neid klasse objektidega. Niisiis, uurime järgmiselt sõltuvuse süstimise eeliseid.

kuidas iteraatorit Java-s kasutada

Sõltuvuse süstimise eelised

Enne kui loetlen sõltuvuse süstimise eelised, lubage mul selgitada teile selle süstimise vajadust tööstuse tasandil, et aidata teil kasu paremini mõista.

Mõelge stsenaariumile, kus teil on meilikursus, mille ainus vastutus on saadud meilide eest hoolitsemine. Nüüd on selles klassis sellised objektid nagu „E-posti aadressile”, „E-posti aadressilt”, „E-posti teema ja sisu”.

Kui ettevõte soovib nüüd teksti- ja helisõnumeid salvestada, kas arvate, et see klass võib sõnumi salvestada?

Noh, vastus on eitav?

Sellepärast ei saa e-posti klass teksti- ja helisõnumite parameetritega hakkama. Sellistel juhtudel peate klassi uuesti looma. Nüüd on klassi taastamine üsna tülikas töö, eriti kui peate seda regulaarselt tegema. Selle asemel, kui kasutate sõltuvuse süstimist, saate objekte tööajal muuta. Niisiis ei pea te klassi uuesti looma, mis aitab teid veelgi mitmel viisil.

Niisiis, kui pean kokku võtma sõltuvuse süstimise eelised, siis on eelised järgmised:

Hästi, nii et nüüd, kui teate sõltuvuse süstimise eeliseid, laseme meil edasi liikuda ja vaadake, kuidas sõltuvuse süstimist juurutada kevadbuutimise abil.

Kuidas DI-d juurutada Spring Boot abil?

Samm 1: Ava oma Eclipse IDE ja loo a Spring Boot rakendus paremklõpsates ja valides Kevadine algusprojekt . Seejärel mainige projekti nime ja klõpsake nuppu Lõpetama .

Kevadstardiprojekti saamiseks peate Eclipse Marketplace'ilt installima Spring Tool Suite'i. Kui teil pole Spring Too Suite'i installitud, võite viidata minu artiklile .

Näete automaatselt, et rakendusfail on loodud nagu allpool.

2. samm: Järgmisena looge samasse paketti klass. Selleks paremklõpsake failil -> valige Klass ja mainida klassi nimi. Seejärel klõpsake nuppu Lõpetama . See loob a Klass faili. Siin olen loonud klassi Kliendid. Vaadake allpool.

3. samm: Pärast seda paneme klassi mõned omadused. Ütleme nii, et lisame Kliendi ID, kliendi nimi ja Kursuse nimi. Mainige allpool olevat koodi.

pakett com.example.demo // paketi nimi public class Kliendid {private int custid private String kliendi nimi private String Coursename}

Samm 3.1: Kui olete sellega hakkama saanud, peate seda tegema genereerida Getteri ja Setteri meetodid nende omaduste jaoks. Selleks valige need omadused ja paremklõps. Seejärel vali Allikas -> Looge Getteri ja Setteri meetodid.

Teie kood peaks siiani olema järgmine:

pakett com.example.demo public class Kliendid {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 (stringi custname) {this.custname = custname} public String getCoursename () {return Coursename} public void setCoursename (String Coursename) {this.coursename = Coursename}}

Mõelge nüüd stsenaariumile, kus peate looma objekti klientidele ja te ei soovi seda käsitsi teha. Sellises stsenaariumis peate objektide hankimiseks alati kasutama sõltuvuse süstimist, kui seda vajate.

Järgmisena uurime, kuidas saaksime sama saavutada.

4. samm: Esiteks muutke joonejoon aastal rakendusklassi fail järgmisele:

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

Märkus. Kui kuvatakse tõrge, importige järgmine:

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

See ülaltoodud koodirida tagastab objekti täitmise ajal. Nüüd lisage järgmine fail rakenduse faili.

kliendid c = context.getBean (klientide klass)

Ülaltoodud rida käsib kompilaatoril tagastada kliendiklassi objekt. Vaadake allpool.

4.1. Samm: Nüüd saate kontrollida, kas see töötab või mitte saab minna tagasi Kliendiklassi ja lisage meetod järgmiselt:

public void display () {System.out.println ('Objekt tagastati edukalt')}

See meetod kuvab edukal käivitamisel väljundi „Objekt on edukalt tagastatud”.

Samm 4.2: Järgmisena peate minema tagasi rakenduse faili juurde ja mainima järgmist:

c. kuva ()

Selle kaudu helistate klassi Kliendid objektiks, kasutades viidet kuvamismeetodile. Siit leiate rakendusklassi koodi allolevalt pildilt:

Nüüd, kui projekti ellu viite, näete välja arvatud kvalifitseerimata tüüpi oad . Seda seetõttu, et teie määratletud kliendiklass ei ole kevaduba, st ei ole kevadine objekt. Vaadake allpool.

4.3. Samm: Nii et kevadkonteinerile selle ütlemiseks vajame kliendiklassi objekti. Selleks peate mainima @Komponendi märkimine , kliendiklassis. Kliendiklassi kood peaks olema järgmine:

pakett com.example.demo import org.springframework.stereotype.Component @Component public class Kliendid {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} public void setCoursename (String Coursename) {this.coursename = Coursename} public void kuva () {System.out.println ('Objekt tagastati edukalt')}}

Siis, kui mainite kliente c = context.getBean (klientide klass) koostaja kontrollib, kas konteineris on kliendioa saadaval või mitte.

Kui Bean on saadaval, süstib Spring raamistik teie rakenduses kliendi objekti. Põhimõtteliselt loob selle objekti Spring raamistik, mida saab rakenduses edasi kasutada.

Niisiis, kui ma selle projekti nüüd käivitan, näete väljundit, mille objekt tagastas edukalt. Vaadake allpool.

Põhimõtteliselt saate sellega rakendada sõltuvuse süstimist.

Näide: sõltuvuse süstimine automaatse traadiga märkuse abil

Loodetavasti olete aru saanud, kuidas sõltuvuse süstimine kevadsaapas töötab. Laiendagem nüüd seda näidet ja vaatame edasi, kuidas teisest klassist sõltuv klass kasutas Spring Bootis selle klassi funktsioone.

Samm 1: Looge uus klassi fail , uuesti paremklõpsake pakendil ja valides Uus -> klass. Mainige nüüd klassi nime nagu allpool ja klõpsake nuppu Lõpetama.

2. samm: Järgmisena paneme klassi mõned omadused. Ütleme nii, et lisame TechID, Techname. Mainige allpool olevat koodi.

pakett com.example.demo public class Technologies {private int techid private String techname}

Samm 2.1: Kui olete sellega valmis, genereerige Getteri ja Setteri meetodid nende omaduste jaoks paremklõpsates failil ja seejärel valige Allikas -> Getteri ja Setteri meetodite genereerimine.

3. samm: Ütleme nüüd, et peame looma meetodi, mis Edukas “. Selleks mainige koodi:

public void tech () {System.out.println ('edukas')}

Teie senine kood peaks välja nägema järgmine:

pakett com.example.demo public class Technologies {private int techid private String techname public int getTechid () {return techid} public void setTechid (int techid) {this.techid = techid} public String getTechname () {return techname} public void setTechname (String techname) {this.techname = techname} public void tech () {System.out.println ('Edukas')}}

4. samm: Nüüd helistada tech () meetod aastal klientide klass , peate looma tehnoloogiaklassi objekti. Nii et mainige klientide klassis järgmist koodirida:

eraettevõtte Technologies üksikasjad

4.1. Samm: Kui olete sellega valmis, genereerige Getteri ja Setteri meetodid nende omaduste jaoks paremklõpsake failil ja seejärel valige Allikas -> Getteri ja Setteri meetodite genereerimine.

5. samm: Järgmiseks kasutage tech () meetod , peate mainima techdetail.tech () all kliendiklassi kuvamismeetod . Samuti veendumaks, et tehnilise detaili objekti mainitakse kohe @Komponendi märkimine on Tehnoloogiate klass. Vaadake allpool.

Selle projekti elluviimisel näete a Nullkursori erand . Seda seetõttu, et nüüd Kliendiklass sõltub tehnoloogia klassist ja ometi ei tea ta tehnoloogia klassi olemasolu .

Niisiis, et võimaldada kliendil klass Technologies ära tunda, peate sisestama @Autowired märkus klassis Kliendid. Teie lõplik kliendiklassi kood peaks olema järgmine:

pakett com.example.demo import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Component @Component public class Customers {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} public void setCoursename (String Coursename) {this.coursename = Coursename} public void display () {System.out.println ( 'Objekt tagastati edukalt') techdetail.tech ()}}

Kui olete need failid käivitanud, näete väljundit kui Object Returned edukalt ja edukalt, mis tähendab, et meie klasside sõltuvus on täidetud. Vaadake allpool.

Nüüd, kui olete artikliga valmis, vaadake järgmist Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik hõlmab üle 250 000 rahuloleva õppija, levinud üle kogu maailma.

Kas teil on meile küsimus? Palun mainige seda selle kommentaaride jaotises „Mis on sõltuvuse süstimine? ”Artikkel ja me pöördume teie poole niipea kui võimalik.