Einführung in Dependency Injection und die Bibliotheken Hilt/Dagger
\n\nIn der modernen App-Entwicklung mit Kotlin (insbesondere für Android) ist Dependency Injection (DI) – die Abhängigkeitsinjektion – eines der zentralen Architekturkonzepte. Es handelt sich um ein Entwurfsmuster, bei dem ein Objekt seine Abhängigkeiten von außen erhält, anstatt sie selbst zu erstellen. Dies macht den Code flexibler, testbarer und wartbarer.
\n\nDagger ist ein leistungsstarkes DI-Framework, das von Google entwickelt wurde und Code zur Kompilierungszeit generiert. Es stellt sicher, dass alle Abhängigkeiten korrekt bereitgestellt werden, und vermeidet Laufzeitfehler, die durch fehlende Abhängigkeiten entstehen. Allerdings hat Dagger aufgrund seiner Komplexität eine steile Lernkurve.
\n\nHilt ist ein Aufsatz auf Dagger, der entwickelt wurde, um dessen Verwendung in Android-Apps zu vereinfachen. Hilt bietet standardisierte Komponenten, Scope-Annotationen und eine automatische Integration mit dem Android-Lebenszyklus (Activity, Fragment, ViewModel usw.). Wenn Sie Kotlin für Android schreiben, ist Hilt die empfohlene Wahl, da es den Boilerplate-Code erheblich reduziert.
\n\nIn diesem Artikel werden wir beide Bibliotheken im Detail betrachten, den Schwerpunkt jedoch auf Hilt als das modernere und benutzerfreundlichere Werkzeug legen. Sie erfahren, wie Sie Hilt installieren, seine wichtigsten Annotationen und Methoden verwenden und analysieren reale Beispiele sowie typische Fehler.
\n\nInstallation von Hilt in einem Kotlin/Android-Projekt
\n\nHilt wird nicht über pip oder npm installiert. Es wird in ein Gradle-Projekt integriert. Für Kotlin und Android sieht der Prozess wie folgt aus:
\n\n1. Hinzufügen des Hilt-Plugins zur build.gradle auf Projektebene (Project-level)
\n// build.gradle (Project)\nbuildscript {\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n // ... andere Plugins\n classpath 'com.google.dagger:hilt-android-gradle-plugin:2.50' // Prüfen Sie die aktuelle Version\n }\n}\n\n\n2. Anwenden des Plugins in der build.gradle des App-Moduls (Module-level)
\n// build.gradle (Module: app)\nplugins {\n id 'com.android.application'\n id 'org.jetbrains.kotlin.android'\n id 'kotlin-kapt' // Erforderlich für Hilt\n id 'dagger.hilt.android.plugin'\n}\n\nandroid {\n // ... Ihre Konfiguration\n}\n\ndependencies {\n implementation 'com.google.dagger:hilt-android:2.50'\n kapt 'com.google.dagger:hilt-compiler:2.50'\n\n // Für ViewModel (optional, aber empfohlen)\n implementation 'androidx.hilt:hilt-navigation-compose:1.1.0' // Für Jetpack Compose\n // oder\n implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03' // Für ältere Versionen\n}\n\n\n3. Konfiguration der Application-Klasse
\nJede App, die Hilt verwendet, muss eine Application-Klasse haben, die mit @HiltAndroidApp annotiert ist.
import android.app.Application\nimport dagger.hilt.android.HiltAndroidApp\n\n@HiltAndroidApp\nclass MyApplication : Application() {\n override fun onCreate() {\n super.onCreate()\n // App-Initialisierung\n }\n}\n\nVergessen Sie nicht, diese Klasse in der AndroidManifest.xml anzugeben:
<application\n android:name=".MyApplication"\n ... >\n\n\nSchnellstart mit einem Codebeispiel
\n\nErstellen wir ein einfaches Beispiel: eine App, die den Benutzer begrüßt, indem sie die Abhängigkeit Greeter mit Hilt injiziert.
Schritt 1: Erstellen Sie die Klasse, die injiziert werden soll
\nimport javax.inject.Inject\n\nclass Greeter @Inject constructor() {\n fun greet(name: String): String {\n return "Hallo, $name!"\n }\n}\n\nDie Annotation @Inject am Konstruktor teilt Hilt mit, wie eine Instanz dieser Klasse erstellt wird.
Schritt 2: Injektion in eine Activity
\nimport android.os.Bundle\nimport android.widge Auch in der Bibliothek
Charts für Swift: Komplette Anleitung mit Beispielen
PDF-Generierung in Swift (iOS/macOS): Überblick über Tools und Beispiele
Rust Standardbibliothek: vollständiger Überblick
OAuth-Client für Java: ScribeJava und Spring Security OAuth2
Arbeiten mit Daten in Swift (iOS/macOS): Bibliotheken und Werkzeuge