Wstrzykiwanie zależności (DI) to wzorzec projektowy, który usuwa zależność z kodu programowania, dzięki czemu zarządzanie aplikacją i jej testowanie jest łatwe. Wstrzykiwanie zależności powoduje, że nasz kod programistyczny jest luźno powiązany. Aby lepiej zrozumieć DI, najpierw zrozummy wyszukiwanie zależności (DL):
Wyszukiwanie zależności
Wyszukiwanie zależności to podejście, w którym uzyskujemy zasób po zapotrzebowaniu. Zasób można uzyskać na różne sposoby, na przykład:
A obj = new AImpl();
W ten sposób zasób (instancję klasy A) otrzymujemy bezpośrednio za pomocą nowego słowa kluczowego. Innym sposobem jest metoda fabryczna:
A obj = A.getA();
W ten sposób pozyskujemy zasób (instancję klasy A) wywołując statyczną metodę fabryczną getA().
Alternatywnie możemy uzyskać zasób poprzez JNDI (Java Naming Directory Interface) jako:
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A');
Zasób można uzyskać na różne sposoby. Zobaczmy, jaki jest problem w tym podejściu.
Problemy wyszukiwania zależności
Istnieją głównie dwa problemy związane z wyszukiwaniem zależności.
Wstrzyknięcie zależności
Wstrzykiwanie zależności to wzorzec projektowy, który usuwa zależność programów. W takim przypadku udostępniamy informację ze źródła zewnętrznego jakim jest plik XML. Dzięki temu nasz kod jest luźno powiązany i łatwiejszy do testowania. W takim przypadku zapisujemy kod jako:
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
W takim przypadku instancja klasy Address jest dostarczana ze źródła zewnętrznego, takiego jak plik XML, za pomocą konstruktora lub metody ustawiającej.
Dwa sposoby wstrzykiwania zależności w środowisku Spring
Framework Spring zapewnia dwa sposoby wstrzykiwania zależności
- Przez Konstruktora
- Metodą Settera
Nadchodzące tematy w Spring Depency Injection
Wstrzykiwanie zależności przez konstruktoraZobaczmy, jak możemy wprowadzić zależność przez konstruktora.
Wstrzykiwanie zależności metodą ustawiającą
Zobaczmy, jak możemy wprowadzić zależność za pomocą metody ustawiającej.