Logo nl.removalsclassifieds.com

Verschil tussen constructorinjectie en setterinjectie (met tabel)

Inhoudsopgave:

Anonim

Wanneer afhankelijkheidsoplossing wordt gemaakt door een externe agent in plaats van de klasse zelf, staat dit bekend als afhankelijkheidsinjectie. Er zijn twee standaardmanieren van afhankelijkheidsinjectie die worden ondersteund in het Spring-framework, via een constructorargument of via het gebruik van de settermethode. Het eerste type afhankelijkheidsinjectie staat bekend als de constructor-injectie en de laatste staat bekend als de setter-injectie. Beide methoden worden voor verschillende doeleinden gebruikt en hebben hun eigen voor- en nadelen.

Constructor-injectie versus setter-injectie

Het verschil tussen Constructor-injectie en Setter-injectie is dat constructorinjectie constructor gebruikt, en aan de andere kant, setter-injectie gebruikt setter-methoden om afhankelijkheid te injecteren. Deze twee soorten injectiemethoden verschillen van elkaar op basis van verschillende parameters, zoals beveiliging, leesbaarheid, ondersteuning van onveranderlijkheid, enzovoort.

Constructor-injectie is een type afhankelijkheidsinjectie in het veerframework waarbij een constructor wordt gebruikt om afhankelijkheid te injecteren. De afhankelijkheden die vereist zijn voor een van de klassen worden gespecificeerd als de parameters van de constructor van die specifieke klasse. Constructor-injectie staat de ontwikkelaar niet toe om een ​​object te construeren tenzij alle afhankelijkheden gereed zijn, en dus zorgt het voor een succesvolle afhankelijkheidsinjectie.

Setter-injectie is een type afhankelijkheidsinjectie in het veerkader dat setter-methoden gebruikt om afhankelijkheid te injecteren. Het heeft setter-methoden van de vorm setXXX() waarbij XXX een afhankelijkheid aangeeft die de afhankelijke objecten in de client injecteert. Deze manier om afhankelijkheid op te lossen is heel gebruikelijk in het Spring-framework.

Vergelijkingstabel tussen constructorinjectie en setterinjectie

Parameters van vergelijking:

Constructor injectie

Setter-injectie

Afhankelijkheid geïnjecteerd Het maakt gebruik van een constructor. Het maakt gebruik van setter-methoden.
Leesbaarheid Het is niet veel leesbaar in vergelijking met de setter. Het is beter leesbaar.
Eigenschap overschrijven Kan afhankelijkheid niet overschrijven. Kan bepaalde afhankelijkheden overschrijven.
Veranderingen Er wordt altijd een nieuwe Bean-instantie gemaakt. Er wordt geen nieuwe bean-instantie gemaakt.
Onveranderlijkheid Het ondersteunt onveranderlijkheid. Het ondersteunt niet.

Wat is Constructor Injection?

Constructorinjectie is een van de standaardmanieren om afhankelijkheid op te lossen binnen het Spring-framework, dat de lijst met afhankelijkheden die vereist is voor klassen statisch definieert door deze als parameters toe te wijzen aan de constructor van de klasse. Alle klassen die afhankelijkheid vereisen, moeten een openbare constructor in zich hebben, die een instantie als het constructorargument neemt, en die constructor zou noodzakelijkerwijs de enige openbare constructor binnen die klasse moeten zijn.

Als er meer dan één afhankelijkheid nodig is, moeten de aanvullende argumenten aan dezelfde constructor worden toegevoegd. Om ervoor te zorgen dat de afhankelijkheid volledig wordt geïnjecteerd, moet één enkel verantwoordelijkheidsprincipe worden gevolgd, dat stelt dat leden maar één ding mogen doen. De constructor moet vrij worden gehouden van elke andere logica om de constructor van de klassen sneller en betrouwbaarder te maken.

Een belangrijk feit van constructor-injectie is dat de objecten pas worden geconstrueerd als alle afhankelijkheden gereed zijn. Omdat het elke keer dat de constructor wordt aangeroepen nieuwe instanties creëert, is overschrijven daarin niet mogelijk. Constructor-injectie wordt in principe gebruikt in gevallen waarin het nodig is om objecten met alle afhankelijkheden te maken. Dit is de meest algemeen toepasbare en gemakkelijkste manier om afhankelijkheden correct te implementeren.

Wat is Setter-injectie?

Setter-injectie is een van de standaardmanieren om afhankelijkheid op te lossen binnen het Spring-framework, dat de setter-methoden gebruikt om de afhankelijkheden op te lossen. De setter-methoden hebben de vorm setXXX(), waarbij XXX de afhankelijkheid specificeert die moet worden geïnjecteerd. Bij dit type injectiemethode wordt eerst het object gemaakt en later wordt de afhankelijkheid geïnjecteerd. Voor het configureren van Spring worden XML-bestanden gebruikt en daarom is de leesbaarheid een grote zorg.

Omdat setter-methoden een specifieke vorm van methodenamen hebben, verbetert dit de leesbaarheid op veel manieren. Wanneer het nodig is om een ​​groter aantal afhankelijkheden te injecteren, heeft het type setter-injectie zeer de voorkeur en de voorkeur boven andere soorten injectiemethoden. Daarnaast kunnen de ontwikkelaars, door gebruik te maken van setter-injectie, de waarden eenvoudig overschrijven en wijzigen, omdat er niet elke keer een nieuwe boneninstantie wordt gemaakt. Het enige nadeel van setter-injectie is dat het geen volledige afhankelijkheidsinjectie garandeert.

Er is geen garantie of een bepaald object afhankelijkheid heeft geïnjecteerd of niet. Met andere woorden, het betekent dat er mogelijk een object is met een onvolledige afhankelijkheid. Setter-injectie is de meest flexibele en meest gebruikelijke manier om afhankelijkheidsinjectie te implementeren.

Belangrijkste verschillen tussen constructorinjectie en setterinjectie

Gevolgtrekking

Waar het op neerkomt is dat beide manieren om afhankelijkheden te injecteren, hetzij constructorinjectie of setterinjectie, hun eigen voor- en nadelen hebben. Daarnaast onthoudt Spring de ontwikkelaars er niet van om iemand anders dan rater te gebruiken. Ze zijn vrij om zowel constructor-injectie als setter-injectie in één Spring-configuratiebestand te gebruiken. Het belangrijkste om in gedachten te houden bij het injecteren van afhankelijkheid is om de constructor-injectie te gebruiken wanneer er een verplichte behoefte is om objecten met alle afhankelijkheden te maken en om setter-injectie te gebruiken wanneer het aantal afhankelijkheden groter is of als er behoefte is aan betere leesbaarheid.

Referenties

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

Verschil tussen constructorinjectie en setterinjectie (met tabel)