Maison > Java > javaDidacticiel > Erreur Dagger 2 : « Impossible d'être fourni » – Comment résoudre les problèmes d'injection de dépendances ?

Erreur Dagger 2 : « Impossible d'être fourni » – Comment résoudre les problèmes d'injection de dépendances ?

Barbara Streisand
Libérer: 2024-12-20 18:08:13
original
835 Les gens l'ont consulté

Dagger 2 Error:

Dépannage de l'erreur de provisionnement des dépendances de Dagger 2 : "Ne peut pas être fourni..."

Problème :

Dagger 2 renvoie l'erreur "com.example.MyDependency ne peut pas être fourni [...]" lors de la tentative d'accès à une dépendance. Cette erreur indique que Dagger ne dispose pas du mécanisme nécessaire pour créer ou fournir la dépendance spécifiée.

Explication :

Comme le suggère le message d'erreur, Dagger nécessite l'une des deux méthodes suivantes pour fournir des dépendances :

  • Classes avec un @Inject annoté constructor
  • Méthodes annotées avec @Provides dans l'un des modules du composant

Correction :

Pour résoudre ce problème, assurez-vous d'avoir soit :

@Injecter Constructeur

  1. Ajoutez un constructeur annoté @Inject à la classe que vous souhaitez utiliser comme dépendance.

    • Exemple :

      class MyDependency {
          @Inject
          MyDependency() { /**/ }
      }
      Copier après la connexion

@Provides Méthode dans un module

  1. Créez un module et ajoutez une méthode annotée @Provides qui renvoie un instance de la dépendance souhaitée.
  2. Ajouter le module à la déclaration du composant.

    • Exemple :

      @Module
      class MyModule {
          @Provides
          MyDependency provideMyDependency() {
              return new MyDependency();
          }
      }
      
      @Component(modules = MyModule.class)
      interface MyComponent {
          MyDependency myDependency();
      }
      Copier après la connexion

Supplémentaire Remarques :

  • Assurez-vous que les dépendances fournies et demandées correspondent exactement, y compris les interfaces ou les qualificatifs.
  • Envisagez d'utiliser @Binds pour mapper une implémentation spécifique à une interface ou une superclasse. si vous étendez ou implémentez d'autres cours.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal