Mi a függőségi injekció? - Tudja, hogyan kell végrehajtani a függőségi injekciót

Ez a cikk a Mi a függőségi injekció, átfogó útmutató a függőségi injekció beadásához a tavaszi indításkor.

Egy olyan világban, ahol programozási nyelvekkel dolgozunk nap mint nap, mindannyian hajlamosak vagyunk módszereket és trükköket keresni, hogy megkönnyítsük az életünket. Nos, a Dependency Injection egy ilyen technika, amelynek célja, hogy könnyebben segítse a fejlesztői kódot egy másik objektum függőségeinek biztosításával. Ebben a cikkben: Mi a függőségi injekció, segítek megérteni ezt a technikát részletesen.



A cikk a következő témákkal foglalkozik:



Kezdjük tehát ezzel a cikkel.

Mi a függőségi injekció?

A függőségi injekció az objektum azon képessége, hogy egy másik objektum függőségeit szolgáltassa.



Most már biztos vagyok benne, hogy a fenti technikai meghatározás alapján nem értett semmit. Tehát hadd töröljem a zavart.

Amikor a függőség kifejezést hallja, mi jut eszébe?

Nyilvánvaló, hogy valami másra támaszkodik a támogatásra, igaz?



Nos, ez ugyanaz, a programozás esetében is.

A programozás függősége egy olyan megközelítés, amikor egy osztály egy másik osztály specifikus funkcióit használja. Tehát például, ha két A és B osztályt veszünk figyelembe, és azt mondjuk, hogy az A osztály a B osztály funkcionalitásait használja, akkor ez azt sugallja, hogy az A osztály B osztályú függőséggel rendelkezik. Ha Java-ban kódol, akkor tudnia kell hogy, muszájhozzon létre egy B osztályú példányt, mielőtt az objektumokat az A osztály használja.

Osztálytípusok - Mi a függőségi injekció - Edureka

Tehát, ha most meg kell határoznom az Ön számára a függőségi injekciót, akkor az objektum létrehozásának folyamatát egy másik osztály számára, és az osztálynak a függőség használatával történő közvetlen engedélyezését függőségi injekciónak hívják.. Főleg három osztálya van:

  • Ügyfélosztály: Ez a függő osztály és a Szolgáltatás osztálytól függ.

  • Szolgáltatási osztály: Ez az osztály szolgáltatást nyújt az ügyfélosztály számára.

  • Befecskendező osztály: Ez az osztály felelős azért, hogy a szolgáltatásosztály objektumot az ügyfélosztályba injektálja

Most, hogy megértette, mi a függőségi injekció, engedje meg, hogy ezután átvigyem Önt az elven, amelyen a függőségi injekció alapul.

A vezérlés inverziója

Amint azt fentebb említettem, a vezérlés inverziója egy olyan elv, amely alapján a függőségi injekció készül. Továbbá, amint a neve is sugallja, az Inversion of Control alapvetően az osztály különféle különféle felelősségeinek megfordítására szolgál, nem pedig a fő felelősségre.

Ha egyszerűbb kifejezésekkel kell elmagyaráznom Önt, akkor vegyen egy példát, ahol képes főzni. Az IoC elve szerint megfordíthatja a vezérlést, így ahelyett, hogy ételeket főzne, egyszerűen csak kívülről rendelhet, ahol az ételt a küszöbén kapja. Így az ön házához szállított étel folyamatát az Ellenőrzés inverziójának nevezzük.

Nem kell magának főznie, ehelyett megrendelheti az ételt, és hagyhatja, hogy a kézbesítő ügyvezető szállítsa az Ön számára az ételt. Így nem kell gondoskodnia a további felelősségekről, és csak a fő munkára kell összpontosítania.

Most, hogy ismeri a függőségi injekció mögött rejlő elvet, hadd vezessem át a függőségi injekció típusait.

A függőségi injekció típusai

A függőségi injekciónak főleg három típusa van:

legjobb java ide a Windows-hoz
  • Kivitelező befecskendezése: Ebben a típusú injekcióban az injektor a kliens osztály konstruktorán keresztül látja el a függőséget.

  • Setter injekció / tulajdonság injekció: Ebben a típusú injekcióban az injektoros módszer a kliens által kitett szetter módszer függőségét injektálja.

  • Interfész befecskendezése: Ebben a típusú injekcióban az injektor az interfészt használja az ügyfélosztálytól való függőség biztosítására. Az ügyfeleknek olyan interfészt kell megvalósítaniuk, amely aszetter módszermelyikelfogadja a függőséget.

Remélem, hogy mostanáig megértette azt a tényt, hogy a Dependency Injection felelős az objektumok létrehozásáért, annak megértéséért, mely osztályok igénylik ezeket az objektumokat, és végül ellátja ezeket az osztályokat az objektumokkal. Tehát ebből a szempontból vizsgáljuk meg legközelebb a függőségi injekció előnyeit.

A függőségi injekció előnyei

Mielőtt felsorolom a függőségi injekció előnyeit, hadd magyarázzam el Önnek az injekció szükségességét ipari szinten, hogy jobban megértsem az előnyöket.

Vegyünk egy forgatókönyvet, ahol van egy e-mail osztályod, amelynek kizárólagos felelőssége a kapott e-mailek gondozása. Ennek az osztálynak olyan objektumai lesznek, mint az „E-mail címre”, „E-mail címről”, „Az e-mail tárgya és törzse”.

Ha most a cég szöveges és audio üzeneteket akar menteni, akkor szerinted ez az osztály képes elmenteni az üzenetet?

Nos, a válasz nem?

Ez azért van, mert az Email osztály nem tudja kezelni a szöveges és az audio üzenetek paramétereit. Ilyen esetekben újra létre kell hoznia az osztályt. Most az osztály újrateremtése meglehetősen nehézkes munka, különösen, ha rendszeresen muszáj. Ehelyett, ha a Dependency Injection alkalmazást használja, az objektumokat futás közben módosíthatja. Tehát ily módon nem kell újrateremtenie az órát, amely sok szempontból tovább segít.

Tehát, ha összefoglalnom kell a függőségi injekció előnyeit, akkor az alábbiak a következők:

Rendben, így most, hogy ismeri a függőségi injekció előnyeit, lépjünk előre, és nézzük meg, hogyan lehet végrehajtani a függőségi injekciót a tavaszi indítással.

Hogyan lehet megvalósítani a DI-t a Spring Boot segítségével?

1. lépés: Nyissa meg Eclipse IDE és hozzon létre egy Tavaszi csomagtartó alkalmazás jobb gombbal kattintva és kiválasztva Tavaszi Kezdő Projekt . Ezután említse meg a projekt nevét és kattintson a gombra Befejez .

A Tavaszi Kezdő Projekt megszerzéséhez telepítenie kell a Spring Tool Suite alkalmazást az Eclipse piactérről. Abban az esetben, ha nincs telepítve a Spring Too Suite program, olvassa el a cikkemet .

Automatikusan látni fogja, hogy egy alkalmazásfájl jön létre az alábbiak szerint.

2. lépés: Ezután hozzon létre egy osztályt ugyanabban a csomagban. Ehhez kattintson a jobb gombbal a fájlra -> válassza Osztály és említsd meg a osztály név. Ezután kattintson a gombra Befejez . Ez létrehozza a Osztály fájl. Itt hoztam létre egy Ügyfelek osztályt. Lásd alább.

3. lépés: Ezután tegyünk be néhány tulajdonságot az osztályhoz. Tehát, mondjuk, beletesszük Ügyfél-azonosító, ügyfél neve és A tantárgy neve. Említse meg az alábbi kódot.

csomag com.example.demo // csomag neve public class Ügyfelek {private int custid private Karakterlánc custname privát String Coursename}

3.1. Lépés: Miután ezzel végzett, meg kell Getter és Setter módszerek generálása ezekre a tulajdonságokra. Ehhez válassza ki ezeket a tulajdonságokat, és kattintson a jobb gombbal. Akkor válassza Forrás -> Getter és Setter módszerek generálása.

Eddig a kódodnak a következőknek kell lennie:

csomag com.example.demo public class Ügyfelek {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}}

Vizsgáljon meg egy olyan forgatókönyvet, amelyben létre kell hoznia egy objektumot az ügyfelek számára, és nem akarja manuálisan megtenni. Ilyen esetekben a Dependency Injekciót kell használnia az objektumok megszerzéséhez, amikor csak szükséges.

Tehát ezután vizsgáljuk meg, hogyan érhetjük el ugyanezt.

4. lépés: Először változtassa meg a futósor ban,-ben alkalmazásosztály fájl a következőkre:

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

Megjegyzés: Ha hibaüzenetet kap, importálja a következőket:

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

Ez a fenti kódsor egy objektumot ad vissza a végrehajtáskor. Most adja hozzá a következő kódot az alkalmazásfájlhoz.

ügyfelek c = context.getBean (customers.class)

A fenti sor megmondja a fordítónak, hogy adja vissza az ügyfélosztály objektumát. Lásd alább.

4.1 lépés: Most, hogy ellenőrizze, működik-e vagy sem, ön visszatérhet az Ügyfél osztályba és adjon hozzá egy módszert az alábbiak szerint:

public void display () {System.out.println ('Az objektum sikeresen visszakerült')}

Ez a módszer a sikeres végrehajtáskor megjeleníti az „Objektum sikeresen visszaküldve” kimenetet.

legjobb ide a java fejlesztéséhez

4.2 lépés: Ezután vissza kell térnie az alkalmazásfájlhoz, és meg kell említenie a következőket:

c.display ()

Ezen keresztül hívja meg az Ügyfelek osztály objektumát a megjelenítési módszer hivatkozásával. Az alkalmazási osztály kódját az alábbi képen tekintheti meg:

Most, ha végrehajtja a projektet, megjelenik egy kivéve a Nincs minősített típusú bab . Ez azért van, mert az Ön által definiált ügyfélosztály nem Spring Bean, azaz nem Spring Object. Lásd alább.

4.3. Lépés: Tehát ahhoz, hogy ezt elmondhassuk a Spring Container-nek, szükségünk van a vevőosztály egyik objektumára. Ehhez meg kell említenie a @Komponens annotáció , az Ügyfél osztályban. Az Ügyfelek osztály kódjának az alábbiaknak kell lennie:

csomag com.example.demo import org.springframework.stereotype.Component @Component public class Ügyfelek {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 ('Az objektum sikeresen visszakerült')}}

Aztán amikor megemlíti az ügyfeleket c = context.getBean (customers.class) a fordító ellenőrzi, hogy a tárolóban van-e elérhető ügyfél-bab.

Ha a Bean elérhető, akkor a tavaszi keretrendszer beadja az ügyfélobjektumot az alkalmazásába. Tehát alapvetően ezt az objektumot a Spring keretrendszer hozza létre, amely tovább használható az alkalmazásban.

Tehát, ha most végrehajtom ezt a projektet, akkor megjelenik egy kimenet, amelyet az Object sikeresen visszaadott. Lásd alább.

Alapvetően így valósíthatja meg a Dependency Injection alkalmazást.

Példa: Függőségi injekció automatikus vezetésű kommentár használatával

java program a fibonacci sorozatokhoz

Remélem, megértette, hogyan működik a Dependency Injection a Spring Boot-ban. Most bővítsük ki ezt a példát, és nézzük meg, hogy egy másik osztálytól függő osztály hogyan használta az osztály funkcióit a Spring Boot alkalmazásban.

1. lépés: Újat csinálni osztályfájl , ismét Kattintson a jobb gombbal a csomagra és a választással Új -> Osztály. Most említse meg az osztály nevét az alábbiak szerint, és kattintson a gombra Befejez.

2. lépés: Ezután tegyünk be néhány tulajdonságot az osztályhoz. Tehát, mondjuk, beletesszük TechID, Techname. Említse meg az alábbi kódot.

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

2.1. Lépés: Miután ezzel végzett, generáljon Getter és Setter módszerek ezekhez a tulajdonságokhoz kattintson a jobb gombbal a fájlra, majd válassza a lehetőséget Forrás -> Getter és Setter módszerek generálása.

3. lépés: Mondjuk, létre kell hoznunk egy módszert, amely Sikeres “. Ehhez említse meg a kódot:

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

Az eddigi kódodnak az alábbiak szerint kell kinéznie:

csomag 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 ('Sikeres')}}

4. lépés: Most, hogy felhívjam a tech () módszer ban,-ben ügyfelek osztálya , létre kell hoznia a technológiák osztályának objektumát. Tehát említse meg a következő kódsort az ügyfelek osztályában:

private Technologies technikai részletek

4.1 lépés: Miután ezzel végzett, generáljon Getter és Setter módszerek ezekre a tulajdonságokra a kattintson a jobb gombbal a fájlra majd válassza Forrás -> Getter és Setter módszerek generálása.

5. lépés: Ezután a tech () módszer , meg kell említenie techdetail.tech () alatt az ügyfélosztály megjelenítési módja . Továbbá annak biztosítása érdekében, hogy a techdetail objektum legyen azonnali megemlítés @Komponens annotáció az a Technológiák osztály. Lásd alább.

Most, amikor végrehajtja ezt a projektet, látni fogja a Null mutató kivétel . Ez azért van, mert most a Az ügyfélosztály a Technologies osztálytól függ, és mégsem ismeri a Technologies osztály létezését .

Tehát ahhoz, hogy az Ügyfél felismerje a Technologies osztályt, be kell helyeznie a @ Engedélyezett kommentár az Ügyfelek osztályban. Az ügyfélosztály végső kódjának a következőknek kell lennie:

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 ( 'Sikeresen visszaküldött objektum') techdetail.tech ()}}

Miután végrehajtotta ezeket a fájlokat, a kimeneteket az Object Returned and Sikeres eredményként fogja látni, ami azt jelenti, hogy az osztályok függősége teljesült. Lásd alább.

Most, hogy elkészült a cikkel, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon.

Van egy kérdésünk? Kérjük, említse meg a „Mi a függőség injekciója” megjegyzés szakaszában. ”Cikk és a lehető leghamarabb kapcsolatba lépünk Önnel.