Heim >Java >javaLernprogramm >Dagger 2-Fehler: „Kann nicht bereitgestellt werden …' – Wie lassen sich Probleme mit der Abhängigkeitsinjektion beheben?

Dagger 2-Fehler: „Kann nicht bereitgestellt werden …' – Wie lassen sich Probleme mit der Abhängigkeitsinjektion beheben?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 18:08:13741Durchsuche

Dagger 2 Error:

Fehlerbehebung beim Dagger 2-Abhängigkeitsbereitstellungsfehler: „Kann nicht bereitgestellt werden...“

Problem:

Dagger 2 gibt beim Versuch, auf eine Abhängigkeit zuzugreifen, den Fehler „com.example.MyDependency kann nicht bereitgestellt werden [...]“ zurück. Dieser Fehler weist darauf hin, dass Dagger nicht über den notwendigen Mechanismus verfügt, um die angegebene Abhängigkeit zu erstellen oder bereitzustellen.

Erklärung:

Wie aus der Fehlermeldung hervorgeht, benötigt Dagger eine von zwei Methoden, um Abhängigkeiten bereitstellen:

  • Klassen mit einer @Inject-Annotation Konstruktor
  • Mit @Provides annotierte Methoden in einem der Module der Komponente

Fix:

Um dieses Problem zu beheben, stellen Sie sicher, dass Sie über Folgendes verfügen entweder:

@Inject Konstruktor

  1. Fügen Sie einen @Inject-annotierten Konstruktor zur Klasse hinzu, die Sie als verwenden möchten Abhängigkeit.

    • Beispiel:

      class MyDependency {
          @Inject
          MyDependency() { /**/ }
      }

@Stellt Methode in einem Modul bereit

  1. Erstellen Sie ein Modul und fügen Sie eine @Provides-annotierte Methode hinzu, die eine zurückgibt Instanz der gewünschten Abhängigkeit.
  2. Fügen Sie das Modul zur Komponentendeklaration hinzu.

    • Beispiel:

      @Module
      class MyModule {
          @Provides
          MyDependency provideMyDependency() {
              return new MyDependency();
          }
      }
      
      @Component(modules = MyModule.class)
      interface MyComponent {
          MyDependency myDependency();
      }

Zusätzlich Hinweise:

  • Stellen Sie sicher, dass die bereitgestellte und die angeforderte Abhängigkeit genau übereinstimmen, einschließlich aller Schnittstellen oder Qualifizierer.
  • Erwägen Sie die Verwendung von @Binds, um eine bestimmte Implementierung einer Schnittstelle oder Superklasse zuzuordnen wenn Sie andere Klassen erweitern oder implementieren.

Das obige ist der detaillierte Inhalt vonDagger 2-Fehler: „Kann nicht bereitgestellt werden …' – Wie lassen sich Probleme mit der Abhängigkeitsinjektion beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn