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:
e r modelové příklady
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.
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.
blokování reklam na youtube pro Android
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 konstruktoremPodí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.