SlideShare a Scribd company logo
Depedency Injection dengan
Dagger, Hilt & Koin
Alfian Yusuf Abdullah
Google Associate Android Developer, Code Reviewer Dicoding
Dependencies
Let’s take a sample
Not implemented Dependencies Injection
What’s we get
● Class Car dan Engine saling terhubung erat
(tightly coupled). Sehingga ketika ingin
membuat object baru dengan Engine yang
berbeda, Anda harus membuat Class Car yang
baru lagi.
● Membuat unit testing menjadi lebih sulit.
Karena Anda harus menggunakan real object
Engine secara langsung, Anda tak bisa
menerapkan test-double seperti membuat
fake object atau mock object.
Approaching Dependencies Injection
Manual Dependency
Injection
Constructor
Injection
Engine ke dalam Constructor. Sehingga
implementasi pada kode sebelumnya
akan menjadi seperti disamping
Method/Field
Injection
Beberapa kelas mungkin tidak bisa
ditambahkan constructor karena
memang sudah dibuat oleh sistem,
contohnya seperti Activity dan
Fragment. Jadi, cara yang bisa dilakukan
yaitu mengirimkan dependency
tersebut melalui setter setelah kelas itu
dibuat seperti disamping
Service Locator
Service
Locator
Service locator berbeda dengan
dependency injection dalam hal
mengontrol dependensi. Pada service
locator class Car yang mengontrol
untuk mengambil object mana yang
akan di-inject. Sedangkan pada
dependency injection Application-lah
yang memiliki kontrol untuk
memberikan / meng-inject object yang
membutuhkan.
Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger, Hilt, & Koin
Common Problems
Injection Library
Dagger adalah library yang sebelumnya dibuat oleh Square dan kini
di-maintain oleh Google. Library ini termasuk yang banyak digunakan oleh
industri sejak lama. Library ini akan otomatis men-generate kode untuk
injection saat di-compile daripada menuliskannya satu per satu. Sehingga
kode Anda menjadi lebih mudah untuk di-refactor, lebih mudah dites, dan
lebih mudah digunakan kembali. Saat ini Dagger terus mengalami
perkembangan dan support yang lebih bagus dengan Android Studio.
Koin adalah library dependency injection yang dibuat 100% Kotlin oleh
Arnaud Giuliani bersama dengan komunitas. Dengan menggunakan Koin
Anda bisa membuat dependency injection dengan lebih simpel karena
tanpa generated code yang berlebih seperti Dagger. Walaupun banyak
yang menyebut bahwa Koin bukan dependency injection -melainkan
service locator-, banyak industri yang menggunakan Koin karena lebih
mudah dipelajari daripada Dagger.
Let’s get start with Dagger
Basic concepts
Ada 3 (tiga) syarat supaya Dagger bisa melakukan injection, yaitu:
● Field yang akan di-inject harus public.
● Field yang akan di-inject harus diberi annotation @Inject.
● Method inject(client) harus dipanggil dari activity/fragment yang
membutuhkan.
Dagger Dependencies
In Action: Without Dagger
In Action: With Dagger
In Action: With Dagger
Dagger Module Creation
@module
@component
Activity injection
Activity injection
Let’s move to Koin!
Basic concepts
Ada 3 (tiga) syarat untuk melakukan injection pada Koin, yaitu:
● Field yang akan di-inject harus bertipe val.
● Field yang akan di-inject harus menggunakan lazy evaluation by inject().
● Constructor yang di-inject tidak boleh private.
Koin Dependencies
In Action: Without Koin
In Action: With Koin
Koin Module Creation
module
startKoin()
Constructor Injection
What about constructor injection with Dagger?
What about constructor injection with Dagger?
Koin vs Dagger?
Function
Pros and Cons
Dagger-hilt?
Contact:
@alfianyabdullah
THANKS!
Follow us: @dicoding

More Related Content

PDF
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
PDF
Dicoding Developer Coaching #25: Android | UI Testing pada Asynchronous denga...
PPTX
ID Android Dev Talk - Observer Pattern, Event Bus Usage, Firebase & Geofire
PDF
Peer Review on Android Projects-A R Firman Syah Putra (Software Development E...
PDF
Tingkatkan Performa Website dengan Bantuan DevTools - Nasrul Gunawan
PDF
Cara Mudah Berkolaborasi dengan Github - Gilang Ramadhan
PDF
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
PDF
Dicoding Developer Coaching #14: Android | Menjalankan Proses di Background T...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #25: Android | UI Testing pada Asynchronous denga...
ID Android Dev Talk - Observer Pattern, Event Bus Usage, Firebase & Geofire
Peer Review on Android Projects-A R Firman Syah Putra (Software Development E...
Tingkatkan Performa Website dengan Bantuan DevTools - Nasrul Gunawan
Cara Mudah Berkolaborasi dengan Github - Gilang Ramadhan
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #14: Android | Menjalankan Proses di Background T...

What's hot (8)

PPTX
Android Workshop beginner
PDF
Apa yang Baru di Android Studio 4.1 - Arif Faidzin
PDF
Panduan Instalasi Android Studio
PDF
Software Engineering 1 (Software Development Process Model)
PPTX
1.suryo_atmojo-materi react-native 1 (mengenal react-native)
PPTX
Sharring session : Understanding QA Collaboration within Project Development
PPTX
Codeigniter by faiz
PDF
mengenal inertia js solusi membangun web spa tanpa harus membuat api
Android Workshop beginner
Apa yang Baru di Android Studio 4.1 - Arif Faidzin
Panduan Instalasi Android Studio
Software Engineering 1 (Software Development Process Model)
1.suryo_atmojo-materi react-native 1 (mengenal react-native)
Sharring session : Understanding QA Collaboration within Project Development
Codeigniter by faiz
mengenal inertia js solusi membangun web spa tanpa harus membuat api
Ad

Similar to Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger, Hilt, & Koin (20)

PPTX
Tugas Rekayasa Web 1
PPTX
Tugas[1] 0317-[dewiapriliani]-[1412510602
PPTX
Tugas i rekayasa web arie firmandani
DOCX
Seri 5 : Mengaktifkan dan menggunakan emulator Pada App Inventor
DOCX
Seri 7 : Mengakses aplikasi kamera dgn intent pada app inventor
PPTX
Tugas 1 0317 individu
PPTX
Fundamental android application development
PDF
Seri 2 mengenal app inventor lebih dalam 2012
PDF
Pengenalan ReactJS
PDF
Modul praktikum 17 - Android Sudaryatno
PDF
flutter basic learning dart lanuage jago flutter dart
PPTX
Tugas[1] 0317-[tryanita]-[1411511676]
PPTX
Google cloud platfrom
PDF
Pengenalan App Inventor_1.pdf
PDF
FIC - Flutter Basic.pdf
PDF
Live coding andorid
PDF
Pemrograman Mobile - (Pengenalan dan Instalasi Android)
PDF
Live coding #1
PPTX
Android Study Jams - Introducing kotlin
PPTX
Tugas 1 (rekayasa web)
Tugas Rekayasa Web 1
Tugas[1] 0317-[dewiapriliani]-[1412510602
Tugas i rekayasa web arie firmandani
Seri 5 : Mengaktifkan dan menggunakan emulator Pada App Inventor
Seri 7 : Mengakses aplikasi kamera dgn intent pada app inventor
Tugas 1 0317 individu
Fundamental android application development
Seri 2 mengenal app inventor lebih dalam 2012
Pengenalan ReactJS
Modul praktikum 17 - Android Sudaryatno
flutter basic learning dart lanuage jago flutter dart
Tugas[1] 0317-[tryanita]-[1411511676]
Google cloud platfrom
Pengenalan App Inventor_1.pdf
FIC - Flutter Basic.pdf
Live coding andorid
Pemrograman Mobile - (Pengenalan dan Instalasi Android)
Live coding #1
Android Study Jams - Introducing kotlin
Tugas 1 (rekayasa web)
Ad

More from DicodingEvent (20)

PDF
Developer Coaching #114.pdf
PDF
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
PPTX
tantangan menjadi developer di abad 21
PDF
Mengenalkan augmented reality (ar) pada snapchat
PDF
Membangun Aplikasi Serverless di Platfrom AWS
PDF
IDCamp X Madrasah: Pengenalan Computational Thinking
PDF
Membuat Produk Digital Terbaik ala Startup Unicorn
PDF
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
PDF
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
PDF
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
PDF
Potensi karier menjadi ios developer di masa depan
PDF
Id camp x dicoding live : persiapan jadi software engineer hebat 101
PDF
Tips sukses berkarir sebagai developer dan programmer 2021
PPTX
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
PDF
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
PDF
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
PDF
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
PDF
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
PDF
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
PDF
Dicoding Developer Coaching #32: Android | Reactive Programming dengan RxJava...
Developer Coaching #114.pdf
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
tantangan menjadi developer di abad 21
Mengenalkan augmented reality (ar) pada snapchat
Membangun Aplikasi Serverless di Platfrom AWS
IDCamp X Madrasah: Pengenalan Computational Thinking
Membuat Produk Digital Terbaik ala Startup Unicorn
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
Potensi karier menjadi ios developer di masa depan
Id camp x dicoding live : persiapan jadi software engineer hebat 101
Tips sukses berkarir sebagai developer dan programmer 2021
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #32: Android | Reactive Programming dengan RxJava...

Recently uploaded (11)

PPTX
Materi_Saka_Wanabakti_Kemah_Pramuka_2025.pptx
PPTX
SUMBER SEJARAH.pptxhjhfy46y47gfyrutrjsyi4wueuywy
PDF
1public speaking._pengantar_public_speaking_rev.pdf
PPTX
PowerPoint Agama Islam Bab 4 Saling Menasihati dalam Islam..pptx
PPTX
Beige Scrapbook Geography Presentation_20250804_212012_0000.pptx
PPTX
TWIBBONize .pptx
PDF
DAY 1_Kebijakan Pembelajaran Coding dan Kecerdasan Artifisial.pptx (1).pdf
PPTX
LK 5.1 Tugas Membuat Mind Map.pptx kepada
PPT
kesiapan kelembagaan dan networking pondok pesantren
PPTX
BAB 1.pptxfgjtruuiiyfthrjkittyruriutjryuyiriti
PPTX
Materi Seminar Minat dan Bakat Untuk Siswa.pptx
Materi_Saka_Wanabakti_Kemah_Pramuka_2025.pptx
SUMBER SEJARAH.pptxhjhfy46y47gfyrutrjsyi4wueuywy
1public speaking._pengantar_public_speaking_rev.pdf
PowerPoint Agama Islam Bab 4 Saling Menasihati dalam Islam..pptx
Beige Scrapbook Geography Presentation_20250804_212012_0000.pptx
TWIBBONize .pptx
DAY 1_Kebijakan Pembelajaran Coding dan Kecerdasan Artifisial.pptx (1).pdf
LK 5.1 Tugas Membuat Mind Map.pptx kepada
kesiapan kelembagaan dan networking pondok pesantren
BAB 1.pptxfgjtruuiiyfthrjkittyruriutjryuyiriti
Materi Seminar Minat dan Bakat Untuk Siswa.pptx

Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger, Hilt, & Koin