logo

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:

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.

    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.

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 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.