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

Lesezeit: ca. 3 Min.

Bewerten

Themen auf dieser Seite:

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.

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.

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 April 2021 - NRW

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


Sei dabei und sichere Dir beim IT-Stipendium NRW bis zu 1200€ Förderung.
Jetzt bewerben!

IT-Stipendium April 2021

Stipendium für Informatiker aus dem gesamten Bundesgebiet


Sei dabei und sichere Dir eines von 3 IT-Stipendien im April 2021.
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 ein Framework? - Definition & Erklärung

20. Nov 2020 in IT-Talents

In Softwareprojekten ist es erforderlich, nicht nur die funktionalen Anforderungen umzusetzen, sondern auch ein…

weiter

Die 5 besten GUI-Clients für Git 2021

05. Nov 2020 in IT-Talents

Git ist ein bekanntes Werkzeug für das Versionsmanagement von Dateien. Entwickelt wurde es für die heute verbreitete H…

weiter

Wozu dient ein Proxy Server?

26. Oct 2020 in IT-Talents

Eine Verbindung zum Internet ist für viele selbstverständlich, aber eine Filterung des Datenverkehrs kann aus den v…

weiter

Was ist PHP und wie kann ich es lernen?

22. Oct 2020 in IT-Talents

Heute erwarten Nutzer ein dynamisches Verhalten Deiner Webseite und genau dafür ist PHP geeignet. Als …

weiter

Was ist Paravirtualisierung? - Virtualisierungstechnologien

06. Oct 2020 in IT-Talents

Der Begriff Virtualisierung bezieht sich auf die Erstellung einer virtuellen statt einer tatsächlichen physischen …

weiter

Was ist Betriebssystemvirtualisierung bzw.…

02. Oct 2020 in IT-Talents

Der Begriff Virtualisierung wird häufig bei Beschreibung und Implementierung abstrakter Hardware- oder Software-Modelle …

weiter

Was ist Virtualisierung? - Virtualisierungstechnologien im…

30. Sep 2020 in IT-Talents

Virtualisierung verspricht effizienten Ressourceneinsatz, einen schnellen Wechsel zwischen verschiedenen…

weiter

Was macht ein Kaufmann im E-Commerce 2020?

03. Jul 2020 in IT-Talents

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

weiter

Was ist GAIA-X?

26. Jun 2020 in IT-Talents

Europäische Konzerne wünschen sich eine europäische Cloud. Am 4. Juni wurden ersten Einzelheiten zur technischen St…

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!