Dagger adalah kerangka kerja injeksi ketergantungan waktu kompilasi yang sepenuhnya statis untuk Java dan Android. Ini adalah adaptasi dari versi sebelumnya yang dibuat oleh Square dan sekarang dikelola oleh Google.
Siapa yang harus membaca?
Jika Anda seorang pengembang Android pemula, yang dimulai dengan Android direc t ly dan belajar Java secara paralel - ini adalah untuk Anda. Atau jika Anda salah satu yang mencoba mempelajari Dagger 2 dan Anda merasa agak sulit untuk memahami konten online lainnya — jangan khawatir, saya juga mengalami kesulitan (kami sedikit istimewa, kami perlu dijelaskan secara berbeda ) dan ini pasti untuk Anda. Jika Anda sudah berpengalaman dalam DI dan Dagger, Anda dapat mengambil sesuatu yang baru atau mendapatkan lebih banyak kejelasan (atau mungkin terdengar sangat pemula).
Apa itu dagger 2 ?
Dagger 2 adalah kerangka kerja injeksi ketergantungan. Ini didasarkan pada Permintaan Spesifikasi Java (JSR) 330. Ini menggunakan pembuatan kode dan didasarkan pada anotasi. Kode yang dihasilkan relatif mudah dibaca dan di-debug.
Dagger 2 menggunakan anotasi berikut:
-
@Module
dan @Provides
: mendefinisikan kelas dan metode yang menyediakan dependensi
-
@Inject
: permintaan dependensi. Dapat digunakan pada konstruktor, bidang, atau metode
-
@Component
: aktifkan modul yang dipilih dan digunakan untuk melakukan injeksi ketergantungan
Dagger 2 menggunakan kode yang dihasilkan untuk mengakses bidang dan bukan refleksi. Oleh karena itu tidak diperbolehkan menggunakan bidang pribadi untuk injeksi lapangan.
Mendefinisikan penyedia ketergantungan (penyedia objek)
Istilah konteks injeksi ketergantungan biasanya digunakan untuk menggambarkan kumpulan objek yang dapat disuntikkan.
Di Dagger 2, kelas yang dianotasi @Module
bertanggung jawab untuk menyediakan objek yang dapat disuntikkan. Kelas tersebut dapat mendefinisikan metode yang dijelaskan dengan @Provides
. Objek yang dikembalikan dari metode ini tersedia untuk injeksi ketergantungan.
Metode yang dijelaskan dengan @Provides
juga dapat mengekspresikan dependensi melalui parameter metode. Dependensi ini dipenuhi oleh Dagger 2, jika memungkinkan.
Mendefinisikan dependensi (konsumen objek)
Anda menggunakan @Inject
anotasi untuk mendefinisikan ketergantungan. Jika Anda membubuhi keterangan konstruktor dengan @Inject
, Dagger 2 juga dapat menggunakan instance objek ini untuk memenuhi dependensi. Ini dilakukan untuk menghindari definisi banyak @Provides
metode untuk objek-objek ini.
Menghubungkan konsumen dan penyedia
The @Component
digunakan pada antarmuka. Antarmuka seperti itu digunakan oleh Dagger 2 untuk menghasilkan kode. Pola dasar untuk kelas yang dihasilkan adalah yang Dagger
digunakan sebagai awalan diikuti dengan nama antarmuka. Kelas generate ini memiliki create
metode yang memungkinkan konfigurasi objek berdasarkan konfigurasi yang diberikan. Metode yang didefinisikan pada antarmuka tersedia untuk mengakses objek yang dihasilkan.
Sebuah @Component
antarmuka mendefinisikan hubungan antara penyedia benda (modul) dan benda-benda yang mengekspresikan ketergantungan. Tabel berikut memberikan gambaran umum tentang penggunaan anotasi dagger.
Fathurrahman
Android Mobile
Hallo saya trainer Android Mobile di Mataweb dan saya sudah berpengalaman lebih dari 5 tahun. jadi kali ini saya akan share tutorial ataupun tips seputar mobile aplikasi. Salam kenal