CodeBlanks Logo Icon CodeBlanks

by inject

by inject() ile bağımlılık enjekte etmeyi öğrenirsin.

by inject nedir?

by inject(), bir sınıfa bağımlılığını lazy şekilde veren Koin delegate'ıdır. KoinComponent arayüzünü gerektirir.

Örnek: class App : KoinComponent { val repo: Repository by inject() }. Bu sınıf repo özelliğine ilk erişimde Repository örneğini alır. Lazy olduğu için bağımlılık ilk kullanılana kadar oluşturulmaz. inject yerine get() de kullanılabilir; fakat eager (hemen) yükler. by inject() performans açısından daha verimlidir.

Uygulama KoinComponent ile by inject

class Repository tanımla. class App : KoinComponent tanımla; içinde val repo: Repository by inject() olsun. main içinde println("Sınıf hazır") yazdır.

Başlangıç kodu

Main.kt
// inject delegate
// buraya yaz
import org.koin.component.KoinComponent
import org.koin.inject

fun main() {
    
}

Örnek çözüm

Main.kt
class Repository

class App : KoinComponent {
    val repo: Repository by inject()
}

fun main() {
    println("Sınıf hazır")
}

Beklenen çıktı

Sınıf hazır

KoinComponent arayüzü

Bir sınıfın by inject() kullanabilmesi için KoinComponent arayüzünü uygulaması gerekir. Bu arayüz, sınıfa Koin erişimi sağlar.

Örnek: class Service : KoinComponent { val repo: Repository by inject() }. KoinComponent arayüzü uygulandığında sınıf içinde get() ve inject() çağrıları yapılabilir. Bu, sınıfın doğrudan Koin'e bağlanmasını sağlar. Dagger'dan farklı olarak Koin'de annotation yoktur; sadece arayüz uygulanır. Bu yaklaşım Kotlin idiomatiktir.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 by inject() ne zaman bağımlılığı oluşturur?

  • Sınıf oluşturulduğunda
  • Uygulama başlangıcında
  • İlk erişimde Doğru cevap
  • Hiçbir zaman

Açıklama: by inject() lazy olduğu için ilk erişimde oluşturur.

2 by inject çağrısını tamamla

Soru
class App : KoinComponent {
    val repo: Repository ____()
}
Cevap
class App : KoinComponent {
    val repo: Repository by inject()
}

Açıklama: by inject() ile bağımlılık lazy alınır.

3 by inject parçalarını eşle

Kavram Anlamı
by inject Lazy delegate
KoinComponent Arayüz
Repository Bağımlılık
App Sınıf

İleri seviye bölümündeki tüm dersler