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
Barbara Streisandoriginal
2024-12-20 18:08:13741parcourir

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() { /**/ }
      }

@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();
      }

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!

Déclaration:
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