Dependency Injection na jaře

  1. Dependency Injection na jaře
  2. Vyhledávání závislostí
  3. Injekce závislosti

Dependency Injection (DI) je návrhový vzor, ​​který odstraňuje závislost z programovacího kódu, takže může být snadné spravovat a testovat aplikaci. Dependency Injection dělá náš programovací kód volně propojený. Abychom lépe porozuměli DI, pojďme nejprve porozumět vyhledávání závislostí (DL):

Vyhledávání závislostí

Vyhledávání závislostí je přístup, kdy získáváme zdroj po poptávce. Zdroje lze získat různými způsoby, například:

 A obj = new AImpl();  

Tímto způsobem získáme zdroj (instanci třídy A) přímo novým klíčovým slovem. Dalším způsobem je tovární metoda:

 A obj = A.getA();  

Tímto způsobem získáme prostředek (instanci třídy A) voláním statické tovární metody getA().

Alternativně můžeme získat zdroj pomocí JNDI (Java Naming Directory Interface) jako:

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

Mohou existovat různé způsoby, jak získat zdroj pro získání zdroje. Podívejme se na problém v tomto přístupu.

Problémy vyhledávání závislostí

Problémy vyhledávání závislostí jsou hlavně dva.

    těsné spojení Díky přístupu vyhledávání závislostí je kód pevně propojen. Pokud se zdroj změní, musíme provést mnoho úprav v kódu. Není to snadné pro testování Tento přístup vytváří mnoho problémů při testování aplikace, zejména při testování černé skříňky.

Injekce závislosti

Dependency Injection je návrhový vzor, ​​který odstraňuje závislost programů. V takovém případě poskytujeme informace z externího zdroje, jako je soubor XML. Díky tomu je náš kód volně propojený a usnadňuje testování. V takovém případě zapíšeme kód jako:

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

V takovém případě je instance třídy Address poskytována externím zdrojem jako je XML soubor buď metodou konstruktoru nebo setteru.

Dva způsoby, jak provést Dependency Injection v rámci Spring

Spring framework poskytuje dva způsoby, jak vložit závislost

  • Od konstruktoru
  • Setterovou metodou

Nadcházející témata v Spring Dependency Injection

Dependency Injection konstruktorem

Podívejme se, jak můžeme vložit závislost pomocí konstruktoru.


Dependency Injection metodou setter

Podívejme se, jak můžeme vložit závislost metodou setter.