Mikä on riippuvuuden injektio? - Osaa toteuttaa riippuvuuden injektio



Tämä artikkeli Mikä on riippuvuuden injektio on kattava opas riippuvuuden injektioon, jossa on kädet keväällä.

Maailmassa, jossa työskentelemme päivittäin päivittäin ohjelmointikielien kanssa, meillä kaikilla on tapana etsiä menetelmiä ja temppuja elämämme helpottamiseksi. No, Dependency Injection on yksi sellainen tekniikka, jonka tarkoituksena on auttaa kehittäjäkoodia helposti tarjoamalla toisen objektin riippuvuuksia. Tässä artikkelissa Mikä on riippuvuuden injektio, autan sinua ymmärtämään tätä tekniikkaa yksityiskohtaisesti.

Tässä artikkelissa käsitellään seuraavia aiheita:





Aloitetaan siis tämän artikkelin kanssa.

Mikä on riippuvuuden injektio?

Riippuvuusinjektio on objektin kyky toimittaa toisen objektin riippuvuuksia.



Nyt olen melko varma, et ehkä ole ymmärtänyt mitään yllä olevan teknisen määritelmän perusteella. Joten anna minun poistaa hämmennys sinulle.

Mikä tulee mieleesi, kun kuulet termin riippuvuus?

Ilmeisesti jotain tukeutuu johonkin muuhun tukeen?



No, se on sama, myös ohjelmoinnin tapauksessa.

Riippuvuus ohjelmoinnissa on lähestymistapa, jossa luokka käyttää toisen luokan tiettyjä toimintoja. Joten esimerkiksi, jos tarkastellaan kahta luokkaa A ja B ja sanotaan, että luokka A käyttää luokan B toimintoja, niin se viittaa siihen, että luokan A riippuvuus on luokka B. Nyt, jos koodaat Java-tilassa, sinun on tiedettävä sinun täytyyLuo luokan B esiintymä ennen kuin luokka A käyttää objekteja.

Luokkatyypit - Mikä on riippuvuuden injektio - Edureka

Joten jos minun on nyt määriteltävä riippuvuusinjektio sinulle, objektin luomisprosessia jollekin muulle luokalle ja luokan antamista suoraan riippuvuutta käyttämällä kutsutaan riippuvuusinjektioksi. Sillä on pääasiassa kolme luokkaa:

  • Asiakasluokka: Tämä on riippuvainen luokka ja riippuu palveluluokasta.

  • Palveluluokka: Tämä luokka tarjoaa palvelua asiakasluokalle.

  • Ruiskutusluokka: Tämä luokka on vastuussa palveluluokan objektin ruiskuttamisesta asiakasluokkaan

Nyt kun olet ymmärtänyt, mikä on riippuvuusinjektio, haluan seuraavaksi viedä sinut läpi periaatteen, johon riippuvuusinjektio perustuu.

Kontrollin kääntäminen

Kuten edellä mainitsin, Inversion of Control on periaate, jonka perusteella tehdään riippuvuusinjektio. Lisäksi, kuten nimestä voi päätellä, Inversion of Control -ohjelmaa käytetään pohjimmiltaan kääntämään luokan erilaiset lisävastuut pikemminkin kuin päävastuu.

kuinka lopettaa ohjelman java

Jos minun on selitettävä teitä yksinkertaisemmin, harkitse esimerkkiä, jossa sinulla on kyky kokata. IoC-periaatteen mukaan voit kääntää ohjauksen käänteiseksi, joten ruoan valmistamisen sijasta voit vain tilata suoraan ulkopuolelta, jolloin saat ruokaa kotiovellesi. Siksi kotiovellesi toimitettua ruokaprosessia kutsutaan hallinnan kääntämiseksi.

Sinun ei tarvitse kokata itse, vaan voit tilata ruoan ja antaa toimitusjohtajan toimittamaan ruoan sinulle. Tällä tavoin sinun ei tarvitse huolehtia lisävastuista ja keskittyä vain päätyöhön.

Nyt kun tiedät riippuvuusinjektion taustalla olevan periaatteen, anna minun viedä sinut läpi riippuvuusinjektiotyypit.

Riippuvuusinjektion tyypit

Riippuvuusinjektioita on pääasiassa kolmea tyyppiä:

  • Rakentajan ruiskutus: Tämän tyyppisessä injektiossa injektori toimittaa riippuvuuden asiakasluokan rakentajan kautta.

  • Setteri-injektio / omaisuuden injektio: Tämän tyyppisessä injektiossa injektorimenetelmä ruiskuttaa riippuvuutta asiakkaan altistamasta setterimenetelmästä.

  • Liitännän injektio: Tämän tyyppisessä injektiossa injektori käyttää Interface-liitäntää riippuvuuden tarjoamiseksi asiakasluokalle. Asiakkaiden on toteutettava käyttöliittymä, joka paljastaa asetterimenetelmämikähyväksyy riippuvuuden.

Toivon tähän asti, että olet ymmärtänyt tosiasian, että riippuvuusinjektio on vastuussa objektien luomisesta, ymmärtämään, mitkä luokat vaativat kyseisiä esineitä ja lopulta toimittamaan kyseisille luokille objektit. Joten, tarkastelemme seuraavaksi riippuvuusinjektion etuja.

Riippuvuusinjektion edut

Ennen kuin luetelen riippuvuusinjektion edut, haluan selittää sinulle tämän injektion tarpeen teollisuuden tasolla, jotta voin ymmärtää edut paremmin.

Tarkastellaan skenaariota, jossa sinulla on sähköpostiluokka, jonka ainoa vastuu on huolehtia vastaanotetuista sähköposteista. Tässä luokassa on nyt objekteja, kuten 'Sähköpostiosoitteeseen', 'Lähettäjäosoitteesta', 'Aihe ja sähköpostin runko'.

Jos yritys haluaa nyt tallentaa teksti- ja ääniviestejä, luuletko, että tämä luokka voi tallentaa viestin?

No, vastaus on ei?

Tämä johtuu siitä, että sähköpostiluokka ei pysty käsittelemään teksti- ja ääniviestien parametreja. Tällaisissa tapauksissa joudut luomaan luokan uudelleen. Luokan luominen on nyt melko hankala työ, varsinkin jos joudut tekemään sitä säännöllisesti. Sen sijaan, jos käytät riippuvuuden injektiota, voit muuttaa objekteja ajon aikana. Joten tällä tavoin sinun ei tarvitse luoda luokkaa uudelleen, mikä auttaa sinua edelleen monin tavoin.

Joten, jos minun on esitettävä yhteenveto riippuvuusinjektion eduista, seuraavat edut ovat:

Selvä, joten nyt kun tiedät riippuvuuden injektion edut, anna meidän siirtyä eteenpäin ja nähdä, miten riippuvuuden injektio toteutetaan keväällä käynnistettäessä.

Kuinka toteuttaa DI käyttämällä Spring Bootia?

Vaihe 1: Avaa sinun Eclipse IDE ja luo Spring Boot -sovellus napsauttamalla hiiren kakkospainikkeella ja valitsemalla Kevään aloitusprojekti . Mainitse sitten projektin nimi ja napsauta Viedä loppuun .

Saadaksesi Spring Starter -projektin, sinun on asennettava Spring Tool Suite Eclipse Marketplacelta. Jos sinulla ei ole Spring Too Suitea asennettuna, voit katsoa artikkelini .

Näet automaattisesti, että sovellustiedosto luodaan alla esitetyllä tavalla.

Vaihe 2: Luo seuraavaksi luokka samaan pakettiin. Tee se napsauttamalla tiedostoa hiiren kakkospainikkeella -> valitse Luokka ja mainitse luokan nimi. Napsauta sitten Viedä loppuun . Tämä luo Luokka tiedosto. Täällä olen luonut Asiakkaat-luokan. Katso alla.

Vaihe 3: Sen jälkeen laitetaan joitain ominaisuuksia luokalle. Joten sanotaan, sisällytämme Asiakastunnus, asiakkaan nimi ja Kurssin nimi. Mainitse alla oleva koodi.

paketti com.example.demo // paketin nimi public class Asiakkaat {private int custid private String custname private String Coursename}

Vaihe 3.1: Kun olet valmis siihen, sinun on luoda Getter- ja Setter-menetelmiä näille ominaisuuksille. Voit tehdä tämän valitsemalla nämä ominaisuudet ja napsauttamalla hiiren kakkospainiketta. Valitse sitten Lähde -> Luo Getter- ja Setter-menetelmät.

Koodisi pitäisi olla seuraava:

paketti com.example.demo public class Asiakkaat {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}}

Harkitse nyt skenaariota, jossa sinun on luotava objekti asiakkaille etkä halua tehdä sitä manuaalisesti. Tällaisessa tilanteessa sinun on sitten käytettävä riippuvuuden injektiota saadaksesi objektit aina kun tarvitset sitä.

Katsotaanpa seuraavaksi, miten voimme saavuttaa saman.

Vaihe 4: Muuta ensin juoksulinja että sovellusluokan tiedosto seuraavaan:

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

Huomaa: Jos saat virheen, tuo seuraavat:

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

Tämä yllä oleva koodirivi palauttaa objektin suorituksen aikana. Lisää nyt seuraava koodi sovellustiedostoon.

muuntaa binaari desimaaliksi Java-muodossa
Asiakkaat c = context.getBean (customers.class)

Yllä oleva rivi kertoo kääntäjän palauttamaan asiakasluokan objektin. Katso alla.

Vaihe 4.1: Nyt voit tarkistaa, toimiiko se vai ei voi palata asiakasluokkaan ja lisää menetelmä seuraavasti:

public void display () {System.out.println ('Objekti palautettu onnistuneesti')}

Tämä menetelmä näyttää tulosteen 'Objekti palautettu onnistuneesti' onnistuneen suorituksen yhteydessä.

Vaihe 4.2: Seuraavaksi sinun on palattava sovellustiedostoon ja mainittava seuraava:

c. näyttö ()

Tämän kautta soitat Asiakkaat-luokan objektille näyttötavan viitteellä. Katso alla olevasta kuvasta sovellusluokan koodi tähän asti:

Jos suoritat projektin, näet lukuun ottamatta Ei tyypin papuja . Tämä johtuu siitä, että määrittämäsi asiakasluokka ei ole kevätpapu eli ei ole kevätobjekti. Katso alla.

Vaihe 4.3: Joten, jotta voimme kertoa Spring Containerille, tarvitsemme asiakkaan luokan objektin. Tätä varten sinun on mainittava @Component-merkintä , asiakasluokassa. Asiakkaat-luokan koodin tulee olla seuraava:

package com.example.demo import org.springframework.stereotype.Component @Component public class Customers {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 display () {System.out.println ('Objekti palautettu onnistuneesti')}}

Sitten, kun mainitset asiakkaita c = context.getBean (customers.class) kääntäjä tarkistaa, onko kontissa asiakaspapuja käytettävissä vai ei.

Jos papu on käytettävissä, Spring-kehys lisää asiakasobjektin sovellukseesi. Joten periaatteessa tämä objekti on luotu Spring-kehyksellä, jota voidaan edelleen käyttää sovelluksessa.

Joten, jos suoritan tämän projektin nyt, näet tuloksen, jonka objekti palautti onnistuneesti. Katso alla.

Näin voit toteuttaa riippuvuusinjektion.

Esimerkki: Riippuvuuden injektio automaattisen merkinnän avulla

Toivon, että olet ymmärtänyt, miten riippuvuuden injektio toimii keväällä. Laajenna nyt tätä esimerkkiä ja katsotaan edelleen, kuinka toisesta luokasta riippuva luokka käytti kyseisen luokan toimintoja Spring Bootissa.

Vaihe 1: Luoda uusi luokan tiedosto , uudestaan napsauttamalla pakettia hiiren kakkospainikkeella ja valitsemalla Uusi -> luokka. Mainitse nyt luokan nimi kuten alla ja napsauta Viedä loppuun.

Vaihe 2: Seuraavaksi laitetaan joitain ominaisuuksia luokalle. Joten sanotaan, sisällytämme TechID, Techname. Mainitse alla oleva koodi.

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

Vaihe 2.1: Kun olet valmis siihen, luo Getter- ja Setter-menetelmät näille ominaisuuksille napsauttamalla tiedostoa hiiren kakkospainikkeella ja valitsemalla sitten Lähde -> Luo Getter- ja Setter-menetelmät.

Vaihe 3: Sanotaan nyt, että meidän on luotava menetelmä, joka tulostaa Onnistunut “. Mainitaksesi koodin, tee näin:

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

Tähänastisen koodisi pitäisi näyttää alla olevalta:

pack 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 ('Onnistunut')}}

Vaihe 4: Soita nyt tech () -menetelmä että asiakkaiden luokka , sinun on luotava teknologialuokan kohde. Mainitse siis seuraava koodirivi asiakasluokassa:

yksityisen teknologian tekniset tiedot

Vaihe 4.1: Kun olet valmis siihen, luo Getter- ja Setter-menetelmät näitä ominaisuuksia varten hiiren kakkospainikkeella tiedostoa ja valitse sitten Lähde -> Luo Getter- ja Setter-menetelmät.

Vaihe 5: Seuraavaksi käyttää tech () -menetelmä , sinun on mainittava techdetail.tech () alla asiakasluokan näyttötapa . Lisäksi varmistaaksesi, että techdetail-objekti mainitaan välittömästi @Component-merkintä on Teknologia-luokka. Katso alla.

Kun suoritat tämän projektin, näet a Nolla osoitinpoikkeus . Tämä johtuu siitä, että nyt Asiakasluokka on riippuvainen Technologies-luokasta, mutta se ei vielä tiedä Technologies-luokan olemassaoloa .

Joten, jotta asiakas voi tunnistaa Technologies-luokan, sinun on lisättävä @Autowired-merkintä Asiakkaat-luokassa. Asiakkaan luokan lopullisen koodin tulisi olla seuraava:

pack 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 ( 'Objekti palautettu onnistuneesti') techdetail.tech ()}}

Kun olet suorittanut nämä tiedostot, näet tuotokset kohteena Palautettu onnistuneesti ja onnistuneesti, mikä tarkoittaa, että luokkien riippuvuus on täytetty. Katso alla.

kuinka käyttää leijua CSS: ssä

Nyt kun olet valmis artikkeliin, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa.

Onko sinulla kysymys meille? Mainitse se tämän 'Mikä on riippuvuuden injektio' -kommenttiosassa. ”Artikkeli ja otamme sinuun yhteyttä mahdollisimman pian.