Dependency Injection

Bild von maniacvector auf Freepik
Dependency Injection (DI) ist ein Entwurfsmuster in der Softwareentwicklung, das dazu dient, Abhängigkeiten zwischen Klassen zu verwalten. Dabei werden benötigte Objekte (Abhängigkeiten) von außen in eine Klasse übergeben, anstatt dass die Klasse diese selbst erstellt. Dies verbessert die Modularität, Testbarkeit und Wartbarkeit des Codes.
Warum ist Dependency Injection nützlich?
- Geringere Kopplung – Klassen sind weniger abhängig von konkreten Implementierungen.
- Bessere Testbarkeit – Abhängigkeiten lassen sich leicht durch Mocks oder Stubs ersetzen.
- Erhöhte Flexibilität – Der Code kann einfacher angepasst oder erweitert werden.
- Zentrale Steuerung von Abhängigkeiten – Das Dependency Management wird an einen DI-Container ausgelagert.
Arten von Dependency Injection
Es gibt verschiedene Wege, Abhängigkeiten in eine Klasse zu injizieren:
- Konstruktor-Injektion (Constructor Injection)
Die Abhängigkeit wird über den Konstruktor übergeben.class Service { private final Repository repository; public Service(Repository repository) { this.repository = repository; } public void doSomething() { repository.getData(); } } - Setter-Injektion (Setter Injection)
Die Abhängigkeit wird über eine Setter-Methode übergeben.class Service { private Repository repository; public void setRepository(Repository repository) { this.repository = repository; } } - Feld-Injektion (Field Injection) (z. B. mit Spring in Java)
Die Abhängigkeit wird direkt ins Feld injiziert.class Service { @Autowired private Repository repository; }
Beispiel mit einem DI-Container (Spring Framework in Java)
Anstatt Abhängigkeiten manuell zu instanziieren, kann ein DI-Framework (z. B. Spring) das übernehmen:
@Service
class Service {
private final Repository repository;
@Autowired
public Service(Repository repository) {
this.repository = repository;
}
}
Hier sorgt Spring automatisch dafür, dass die richtige Instanz von Repository bereitgestellt wird.
Fazit
Dependency Injection ist ein leistungsstarkes Muster zur Verwaltung von Abhängigkeiten in einer Anwendung. Es verbessert die Wartbarkeit, macht den Code testbar und trennt Komponenten voneinander, was eine saubere Architektur ermöglicht.
„Möchtest Du zu diesen Begriff oder einem anderen Thema mit uns ins Gespräch kommen?“
Dann kontaktiere uns einfach hier! 😊
Wir sind darum bemüht die angebotenen Informationen aktuell zu halten und diese in knapper und verständlicher Form darzustellen. Fehler und Irrtümer bleiben aber menschlich und darum vorbehalten. Bei Unstimmigkeiten zu einem Begriff, bitten wir darum dies per E-Mail mit uns zu diskutieren. Bitte nutze hierfür unsere E-Mail: info@jupiterexpress.de« Zurück zum Glossar Index