Logo pl.removalsclassifieds.com

Różnica między wtryskiem konstruktora a wtryskiem setera (z tabelą)

Spisu treści:

Anonim

Gdy rozwiązywanie zależności jest dokonywane przez agenta zewnętrznego, a nie przez samą klasę, jest to znane jako wstrzykiwanie zależności. Istnieją dwa standardowe sposoby wstrzykiwania zależności, które są obsługiwane we frameworku Spring, za pomocą argumentu konstruktora lub za pomocą metody ustawiającej. Pierwszy rodzaj wstrzykiwania zależności jest znany jako wstrzykiwanie konstruktora, a drugi jest znany jako wstrzykiwanie ustawiające. Obie metody są wykorzystywane do różnych celów i mają swoje wady i zalety.

Wtrysk konstruktora a wstrzykiwanie setera

Różnica między wstrzykiwaniem konstruktora a wstrzykiwaniem Settera polega na tym, że wstrzykiwanie konstruktora używa konstruktora, a z drugiej strony wstrzykiwanie konstruktora wykorzystuje metody ustawiające do wstrzykiwania zależności. Te dwa rodzaje sposobów wstrzykiwania różnią się od siebie kilkoma parametrami, takimi jak bezpieczeństwo, czytelność, obsługa niezmienności i tak dalej.

Wstrzykiwanie konstruktora to rodzaj wstrzykiwania zależności w strukturze wiosny, który używa konstruktora do wstrzykiwania zależności. Zależności, które są wymagane dla którejkolwiek z klas, są określone jako parametry konstruktora tej konkretnej klasy. Wstrzyknięcie konstruktora nie pozwala deweloperowi na konstruowanie żadnego obiektu, chyba że wszystkie zależności są gotowe, a zatem zapewnia pomyślne wstrzyknięcie zależności.

Wstrzykiwanie ustawiające to rodzaj wstrzykiwania zależności w strukturze Spring, który używa metod ustawiających do wstrzykiwania zależności. Ma metody ustawiające w postaci setXXX(), gdzie XXX oznacza zależność, która wstrzykuje zależne obiekty do klienta. Ten sposób rozwiązywania zależności jest bardzo powszechny we frameworku Spring.

Tabela porównawcza między wtryskiem konstruktora a wtryskiem setera

Parametry porównania

Wstrzyknięcie konstruktora

Wtrysk setera

Wstrzyknięta zależność Używa konstruktora. Wykorzystuje metody setera.
Czytelność W porównaniu z seterem jest mało czytelny. Jest bardziej czytelny.
Zastąp właściwość Nie można zastąpić zależności. Może zastąpić niektóre zależności.
Zmiany Zawsze tworzy nową instancję fasoli. Nie tworzy żadnej nowej instancji fasoli.
Niezmienność Wspiera niezmienność. Nie obsługuje.

Co to jest wtrysk konstruktora?

Wstrzykiwanie konstruktora to jeden ze standardowych sposobów rozwiązywania zależności w ramach frameworka Spring, który statycznie definiuje listę zależności wymaganych dla klas, przypisując je jako parametry do konstruktora klasy. Wszystkie klasy, które wymagają zależności, muszą mieć w sobie publiczny konstruktor, który przyjmuje instancję jako argument konstruktora, a ten konstruktor powinien koniecznie być jedynym publicznym konstruktorem w tej klasie.

Jeśli istnieje potrzeba więcej niż jednej zależności, to dodatkowe argumenty należy dodać do tego samego konstruktora. Aby zapewnić całkowite wstrzyknięcie zależności, należy przestrzegać jednej zasady odpowiedzialności, która stanowi, że członkowie powinni robić tylko jedną rzecz. Konstruktor powinien być wolny od jakiejkolwiek innej logiki, aby konstruktor klas był szybszy i bardziej niezawodny.

Ważnym faktem wstrzykiwania konstruktora jest to, że obiekty nie zostaną zbudowane, dopóki wszystkie zależności nie będą gotowe. Ponieważ tworzy nowe instancje za każdym razem, gdy konstruktor jest w ten sposób wywoływany, nadpisywanie nie jest w nim możliwe. Wstrzykiwanie konstruktora jest w zasadzie stosowane w przypadkach, gdy istnieje konieczność tworzenia obiektów ze wszystkimi zależnościami. Jest to najbardziej powszechnie stosowany i najłatwiejszy sposób poprawnej implementacji zależności.

Co to jest wstrzyknięcie setera?

Setter injection to jeden ze standardowych sposobów rozwiązywania zależności w ramach frameworka Spring, który wykorzystuje metody setter do rozwiązywania zależności. Metody ustawiające mają postać setXXX(), gdzie XXX określa zależność, którą należy wstrzyknąć. W tego typu metodzie wstrzykiwania najpierw tworzony jest obiekt, a następnie wstrzykiwana jest zależność. Do konfiguracji Springa używane są pliki XML, dlatego czytelność jest dużym problemem.

Ponieważ metody ustawiające mają określoną formę nazw metod, zwiększa to czytelność na wiele sposobów. Gdy istnieje potrzeba wstrzykiwania większej liczby zależności, wówczas bardzo preferowany i preferowany jest typ wtrysku ustawiającego w stosunku do innych rodzajów metod wtrysku. Ponadto, korzystając z metody setter injection, programiści mogą łatwo nadpisać i zmienić wartości, ponieważ nie tworzy on za każdym razem nowej instancji fasoli. Jedyną wadą wstrzykiwania ustawiającego jest to, że nie zapewnia pełnego wstrzykiwania zależności.

Nie ma gwarancji, czy dany obiekt ma wstrzykniętą zależność, czy nie. Innymi słowy, oznacza to, że może istnieć obiekt z niepełną zależnością. Setter injection to najbardziej elastyczny i najczęstszy sposób implementacji wstrzykiwania zależności.

Główne różnice między wtryskiem konstruktora a wtryskiem setera

Wniosek

Najważniejsze jest to, że oba sposoby wstrzykiwania zależności mogą być wstrzykiwaniem konstruktora lub wstrzykiwania ustawiającego, mają swoje wady i zalety. Poza tym Spring nie powstrzymuje deweloperów przed używaniem nikogo poza oceniającym. Mogą swobodnie używać zarówno wstrzykiwania konstruktora, jak i wstrzykiwania ustawiającego w jednym pliku konfiguracyjnym Springa. Ważną rzeczą, o której należy pamiętać przy wstrzykiwaniu zależności jest użycie wstrzykiwania konstruktora, gdy istnieje konieczność tworzenia obiektów ze wszystkimi zależnościami oraz wstrzykiwania setterów, gdy liczba zależności jest większa lub gdy istnieje potrzeba poprawy czytelność.

Bibliografia

  1. https://digitalcommons.calpoly.edu/csse_fac/34/
  2. https://books.google.com/books?hl=pl&lr=&id=InfRDwAAQBAJ&oi=fnd&pg=PA63&dq=constructor+injection&ots=Hon_bCw-Kv&sig=VdsD_S0lCfP3D8idI8q4F6RnhoE

Różnica między wtryskiem konstruktora a wtryskiem setera (z tabelą)