Dein letzter Login ist schon eine Weile her.

Bitte überprüfe, ob alle Angaben in Deinem Profil noch aktuell sind.


26.04.2019
von Jesko
in IT-Talents

Was ist Dependency Injection?

x
Für Unternehmen:
IT-Nachwuchs kennenlernen!
Jetzt starten

Funktion, Eigenschaften und Besonderheiten sowie Anwendungen von Dependency Injection

Dependency Injection, kurz DI, nimmt aufgrund der Auswirkungen auf die Code-Vereinfachung immer mehr zu. Wenn du noch keine Gelegenheit hattest, DI zu erlernen und anzuwenden, wird dich dieser Artikel mit den Konzepten vertraut machen und veranschaulichen, wie die Dependency Injection funktioniert.

Lesezeit: ca. 3 Min.

Bewerten

Themen auf dieser Seite:

IT-Talents.de ist Deine Plattform für Förderung und Weiterbildung während des IT-Studiums!
Fördermöglichkeiten ansehen


Was ist Dependency Injection?

Beim Software-Engineering ist Dependency Injection eine Technik, bei der ein Objekt (oder eine statische Methode) die Abhängigkeiten eines anderen Objekts liefert. Eine Abhängigkeit wiederum ist ein Objekt, das verwendet werden kann (ein Dienst). Eine Injektion ist die Weitergabe einer Abhängigkeit an ein abhängiges Objekt (einen Client), das diese verwenden würde. Die Weitergabe des Dienstes an den Client, anstatt einem Client das Erstellen oder Finden des Dienstes zu ermöglichen, ist die grundlegende Anforderung des Musters bei der Dependency Injection.

Hinter der Dependency Injection steht die Absicht, Objekte so weit zu entkoppeln, dass kein Client-Code geändert werden muss, nur weil ein Objekt, von dem es abhängig ist, in einen anderen geändert werden muss. Die Dependency Injection ist eine Form der umfassenderen Technik der Inversion der Kontrolle. Wie bei anderen Formen der Inversion der Kontrolle unterstützt die Dependency Injection das Prinzip der Abhängigkeitsinversion. Der Client überträgt die Verantwortung für die Bereitstellung seiner Abhängigkeiten an externen Code (den Injektor). Der Client darf den Injector-Code nicht aufrufen. Dies ist der Injection-Code, der die Dienste erstellt und den Client auffordert, sie einzuspeisen. Dies bedeutet, dass der Clientcode nicht über den einzuführenden Code Bescheid wissen muss, wie die Services erstellt werden sollen oder welche Services tatsächlich verwendet werden. Der Client muss nur die intrinsischen Schnittstellen der Services kennen, da diese festlegen, wie der Client die Services verwenden darf. Dies trennt die Verantwortlichkeiten für Nutzung und Konstruktion.

Es gibt drei gängige Mittel, mit denen ein Client eine Dependency Injection akzeptieren kann: Setter-, Schnittstellen- und Konstruktorbasierte Injektion. Setter und Konstruktorinjektion unterscheiden sich hauptsächlich darin, wann sie verwendet werden können. Die Schnittstelleninjektion unterscheidet sich dadurch, dass der Abhängigkeit die Möglichkeit gegeben wird, die eigene Injektion zu steuern. Für jedes muss ein separater Konstruktionscode (der Injektor) die Verantwortung dafür übernehmen, dass ein Client und seine Abhängigkeiten zueinander eingeführt werden.

Wie funktioniert Dependency Injection?

Dependency Injection löst Probleme wie:

  • Wie kann eine Anwendung oder Klasse unabhängig von der Erstellung ihrer Objekte sein?
  • Wie kann festgelegt werden, wie Objekte in separaten Konfigurationsdateien erstellt werden?
  • Wie kann festgelegt werden, wie Objekte in separaten Konfigurationsdateien erstellt werden?

Das Erstellen von Objekten direkt innerhalb der Klasse, für die die Objekte erforderlich sind, ist unflexibel, da die Klasse für bestimmte Objekte festgelegt wird und die spätere Änderung der Instantiierung nicht unabhängig von der Klasse (ohne Änderung dieser) möglich ist. Dadurch wird verhindert, dass sie wieder verwendet werden kann, wenn andere Objekte erforderlich sind. Außerdem ist die Klasse schwer zu testen, da echte Objekte nicht durch Scheinobjekte ersetzt werden können.

Auf IT-Talents.de kannst Du Dich mit dem Who-is-Who der IT-Branche vernetzen!
Jetzt Top-Unternehmen anschauen


Eigenschaften und Besonderheiten von Dependency Injection. In welchen Frameworks und Programmiersprachen kann ich Depedendency Injection nutzen?

Die Dependency Injection ist eine beliebte Alternative zum Service Locator-Muster. Viele moderne Anwendungsframeworks implementieren diese Technik und diese Frameworks stellen die technischen Teile der Technik bereit, sodass du dich auf die Implementierung deiner Geschäftslogik konzentrieren kannst. Beliebte Beispiele sind:

  • Spring (Java)
  • Google Guice (Java)
  • Dagger (Java and Android)
  • Castle Windsor (.NET)
  • Unity(.NET)
  • Wallaroo (C++)
  • Hypodermic (C++)
  • Robotlegs (Actionscript)
  • LightWire (ColdFusion)
  • Orochi (Perl]
  • Phemto (PHP 5)
  • Laravel (PHP 5)
  • SpringPython (Python)
  • Zenject (Unity 3D)

Abhängigkeitsinjektion kann als eine Disziplin angewendet werden, die dazu auffordert, dass alle Objekte Konstruktion und Verhalten voneinander trennen. Die Verwendung eines DI-Frameworks für die Ausführung von Konstruktionen kann dazu führen, dass die Verwendung des neuen Schlüsselworts oder die direkte Erstellung von Wertobjekten verboten wird.

Warum sollte ich Dependency Injection nutzen?

Dependency Injection Abhängigkeitsinjektion wird in der Entwicklergemeinde immer beliebter. Inversion of Control spricht darüber, wer den Anruf einleiten soll, während die Dependency Injection davon spricht, wie ein Objekt durch Abstraktion eine Abhängigkeit von einem anderen Objekt erlangt. Wenn du Dependency Injection verwendest, kannst du zwischen verschiedenen Stilen wählen. Dieses Entwurfmuster hilft auch bei der Klassenentkopplung und macht es einem Entwickler leicht, Abhängigkeiten zwischen Objekten zu verwalten. Dadurch wird es dir einfacher fallen, zusammenhängende Funktionen in deinen eigenen Vertrag zu integrieren. Infolgedessen wird der Code stärker modularisiert. Dependency Injection erhöht auch die Wiederverwendbarkeit des Codes und verbessert die Wartbarkeit und das Testen von Codes.

Hier noch ein Beispiel-Video für eine Dependency Injection mit Autofac:

Aktuelle Aktionen:

IT-Stipendium Februar 2020 NRW

1200€ Förderung für IT-Talente aus NRW


Stipendium über 1200€ - Exklusiv für IT-Talente aus NRW!
Jetzt bewerben!

IT-Stipendium Februar 2020

1200€ Förderung für IT-Talente


Sei dabei und sichere Dir im bundesweiten IT-Stipendium Februar 2020 bis zu 1200€ Förderung.
Jetzt bewerben!

IT-Talents ist ein Netzwerk nur für IT'ler. Auf unserer Plattform kannst Du Dich als registriertes Mitglied mit wenigen Klicks auf die Jobs unserer Partnerunternehmen oder auf IT-Projekte für Studierende bewerben. Darüberhinaus führen wir Wettbewerbe durch und vergeben IT-Stipendien.

Jetzt Mitglied werden.

Verwandte Artikel

Was ist SAP BPC?

12. Sep 2019 in Software

Der Unternehmenserfolg hängt nicht nur von der Nachfrage an Produkten und Dienstleistungen ab. Es ist auch das Ergebnis …

weiter

Was ist eine E-Mail und wie funktioniert sie?

19. Aug 2019 in IT-Talents

Mittlerweile haben sich E-Mails auf der ganzen Welt durchgesetzt und lösen Briefe, Faxe und Telegramme immer mehr ab. …

weiter

Was ist Docker?

13. Aug 2019 in IT-Talents

Docker bietet Entwicklern die Möglichkeit, dass ihre Arbeiten, wie entwickelte Softwares oder geschriebene Codes auf …

weiter

Was ist TensorFlow?

26. Jul 2019 in IT-Talents

Programmierer nutzen TensorFlow als Framework um verschiedene Modelle für das maschinelle Lernen zu entwickeln. …

weiter

Was macht ein IT-Auditor?

17. Jul 2019 in IT-Talents

Was genau macht eigentlich ein IT-Auditor? In diesem Artikel schlüsseln wir nicht nur die Verantwortlichkeiten eines …

weiter

Was ist E-Commerce?

13. Jul 2019 in IT-Talents

E-Commerce, auch Internethandel oder Onlinehandel genannt, ist der Fachbegriff für jegliche Ein- und Verkaufsvorgänge, d…

weiter

E-Commerce Manager - der Beruf, die Aufgaben und das Gehalt

05. Jul 2019 in IT-Talents

E-Commerce, also der Handel im Internet, nimmt eine immer größere Bedeutung in der heutigen Gesellschaft ein. Dadurch w…

weiter

Was macht ein Kaufmann/Kauffrau im E-Commerce?

03. Jul 2019 in IT-Talents

Der Onlinehandel boomt und macht derzeit einen Großteil der Wirtschaft aus. Mit dem Ausbildungsberuf Kaufmann/frau im …

weiter

Was ist SAP PM?

15. May 2019 in Software

SAP PM bietet eine umfassende Palette von Business-Softwarelösungen, damit Unternehmen ihre Geschäftsmodelle optimieren u…

weiter

Schnell-Login für unsere Mitglieder

Tipp: Halte Dein Profil aktuell.

Lass' uns wissen, falls sich etwas Neues bei Dir ergibt.

Tipp: Vervollständige Dein Profil für noch bessere Karrierechancen.

Bist Du Schüler, Student oder bereits berufstätig? Teile uns Deinen aktuellen Status mit, damit wir Dir sinnvolle Aufgaben anbieten können.

Jetzt Status angeben

Wann stehst Du der IT-Branche zur Verfügung?

Bitte Monat und Jahr angeben.

{{ perspectiveForm.availableFrom.$error.dynamic }}

Neuer Versuch

Wo möchtest Du durchstarten?

{{ location.geolocation.name }}×
Bitte mindestens ein Ort angeben.

Als {{currentUser.status.title}} bist Du bereit für:


Lade Beschäftigungsarten

Bitte wähle den Zeitpunkt, Ort und min. eine Beschäftigungsart aus.

You have voted!
Schliessen
Vote for:
stars
Vote
You have not rated!