Rumah >Java >javaTutorial >Ralat Dagger 2: 'Tidak Dapat Disediakan...' – Bagaimana untuk Membetulkan Isu Suntikan Ketergantungan?

Ralat Dagger 2: 'Tidak Dapat Disediakan...' – Bagaimana untuk Membetulkan Isu Suntikan Ketergantungan?

Barbara Streisand
Barbara Streisandasal
2024-12-20 18:08:13741semak imbas

Dagger 2 Error:

Menyelesaikan Masalah Ralat Peruntukan Kebergantungan Dagger 2: "Tidak Dapat Disediakan..."

Isu:

Dagger 2 mengembalikan ralat "com.example.MyDependency tidak boleh diberikan [...]" semasa cuba mengakses kebergantungan. Ralat ini menunjukkan bahawa Dagger tidak mempunyai mekanisme yang diperlukan untuk mencipta atau menyediakan kebergantungan yang ditentukan.

Penjelasan:

Seperti yang dicadangkan oleh mesej ralat, Dagger memerlukan satu daripada dua kaedah untuk berikan kebergantungan:

  • Kelas dengan @Inject beranotasi pembina
  • Kaedah beranotasi dengan @Provides dalam salah satu modul komponen

Betulkan:

Untuk menyelesaikan isu ini, pastikan anda mempunyai sama ada:

@Suntikan Pembina

  1. Tambahkan pembina beranotasi @Inject pada kelas yang anda ingin gunakan sebagai pergantungan.

    • Contoh:

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

@Menyediakan Kaedah dalam Modul

  1. Buat modul dan tambahkan @Provides kaedah beranotasi yang mengembalikan contoh kebergantungan yang diingini.
  2. Tambahkan modul pada komponen pengisytiharan.

    • Contoh:

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

Nota Tambahan:

  • Pastikan kebergantungan yang disediakan dan diminta sepadan dengan tepat, termasuk mana-mana antara muka atau kelayakan.
  • Pertimbangkan menggunakan @Binds untuk memetakan pelaksanaan khusus kepada antara muka atau superclass jika anda melanjutkan atau melaksanakan kelas lain.

Atas ialah kandungan terperinci Ralat Dagger 2: 'Tidak Dapat Disediakan...' – Bagaimana untuk Membetulkan Isu Suntikan Ketergantungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn