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
Freigeben: 2024-12-20 18:08:13
Original
740 Leute haben es durchsucht

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() { /**/ }
      }
      Nach dem Login kopieren

@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();
      }
      Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage