logo

Injekcia závislosti na jar

  1. Injekcia závislosti na jar
  2. Vyhľadávanie závislostí
  3. Injekcia závislosti

Dependency Injection (DI) je návrhový vzor, ​​ktorý odstraňuje závislosť z programovacieho kódu, aby bolo možné aplikáciu jednoducho spravovať a testovať. Dependency Injection robí náš programovací kód voľne spojený. Aby sme lepšie porozumeli DI, najprv pochopme vyhľadávanie závislostí (DL):

Vyhľadávanie závislostí

Vyhľadávanie závislostí je prístup, pri ktorom získavame zdroj po dopyte. Zdroje je možné získať rôznymi spôsobmi, napr.

 A obj = new AImpl(); 

Týmto spôsobom získame zdroj (inštanciu triedy A) priamo novým kľúčovým slovom. Ďalším spôsobom je továrenská metóda:

 A obj = A.getA(); 

Takto získame zdroj (inštanciu triedy A) zavolaním metódy statickej továrne getA().

Alternatívne môžeme získať zdroj pomocou JNDI (Java Naming Directory Interface) ako:

 Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A'); 

Zdroje na získanie zdroja možno získať rôznymi spôsobmi. Pozrime sa na problém v tomto prístupe.

Problémy vyhľadávania závislostí

Existujú hlavne dva problémy vyhľadávania závislostí.

    tesné spojenieVďaka prístupu vyhľadávania závislostí je kód pevne spojený. Ak sa zdroj zmení, musíme vykonať veľa úprav v kóde.Nie je to ľahké na testovanieTento prístup vytvára veľa problémov pri testovaní aplikácie, najmä pri testovaní čiernej skrinky.

Injekcia závislosti

Dependency Injection je návrhový vzor, ​​ktorý odstraňuje závislosť programov. V takom prípade poskytujeme informácie z externého zdroja, ako je súbor XML. Vďaka tomu je náš kód voľne spojený a ľahšie sa testuje. V takom prípade napíšeme kód takto:

 class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } } 

V takom prípade je inštancia triedy Address zabezpečená externým zdrojom, akým je napríklad súbor XML, buď pomocou metódy konštruktora alebo nastavovača.

Dva spôsoby vykonávania Dependency Injection v rámci Spring

Jarný rámec poskytuje dva spôsoby, ako vniesť závislosť

  • Od konštruktéra
  • Setterovou metódou

Nadchádzajúce témy v Spring Dependency Injection

Injekcia závislostí konštruktorom

Pozrime sa, ako môžeme vložiť závislosť pomocou konštruktora.


Dependency Injection setterovou metódou

Pozrime sa, ako môžeme vložiť závislosť metódou setter.