A Dependency Injection (DI) egy tervezési minta, amely eltávolítja a függőséget a programozási kódból, így az alkalmazás könnyen kezelhető és tesztelhető. A Dependency Injection lazán összekapcsolja a programozási kódunkat. A DI jobb megértéséhez először ismerjük meg a függőségi keresést (DL):
Dependency Lookup
A Dependency Lookup egy olyan megközelítés, ahol az erőforrást kereslet után kapjuk meg. Az erőforrás beszerzésének többféle módja is lehet, például:
A obj = new AImpl();
Ily módon az erőforrást (az A osztály példányát) közvetlenül új kulcsszóval kapjuk meg. Egy másik módszer a gyári módszer:
legszebb mosoly a világon
A obj = A.getA();
Így a statikus gyári getA() metódus meghívásával kapjuk meg az erőforrást (az A osztály példányát).
Alternatív megoldásként megkaphatjuk az erőforrást a JNDI-től (Java Naming Directory Interface) a következőképpen:
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A');
Különféle módon lehet elérni, hogy az erőforrás megszerezze az erőforrást. Lássuk a problémát ebben a megközelítésben.
A függőségi keresés problémái
Főleg két probléma van a függőségi kereséssel.
Függőség-injekció
A Dependency Injection egy tervezési minta, amely eltávolítja a programok függőségét. Ebben az esetben az információkat külső forrásból, például XML fájlból biztosítjuk. Ez lazán csatolja kódunkat, és könnyebben tesztelhető. Ebben az esetben a kódot így írjuk:
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
Ebben az esetben az Address osztály példányát külső forrás, például XML-fájl biztosítja, konstruktor vagy beállító módszerrel.
Két módszer a függőség-injekció végrehajtására a tavaszi keretrendszerben
A tavaszi keretrendszer két módot kínál a függőség beszúrására
- Konstruktor által
- Szetter módszerrel
Közelgő témák a tavaszi függőségi injekcióban
Dependency Injection by konstruktorNézzük meg, hogyan adhatunk függőséget konstruktorral.
Függőség-injektálás beállító módszerrel
Nézzük meg, hogyan szúrhatunk be függőséget setter módszerrel.