logo

Zastrzyk zależności na wiosnę

  1. Zastrzyk zależności na wiosnę
  2. Wyszukiwanie zależności
  3. Wstrzyknięcie zależności

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.

    szczelne sprzęgłoMetoda wyszukiwania zależności sprawia, że ​​kod jest ściśle powiązany. Jeśli zasób zostanie zmieniony, musimy wykonać wiele modyfikacji w kodzie.Nie jest łatwo przetestowaćTakie podejście stwarza wiele problemów podczas testowania aplikacji, szczególnie w przypadku testów czarnej skrzynki.

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 konstruktora

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