[kotlin] Dagger나 Koin 등 의존성 주입 프레임워크 사용 방법 학습하기

Dagger를 사용한 의존성 주입

Dagger는 컴파일 타임 의존성 주입 프레임워크로, 안드로이드 앱에서 많이 사용됩니다. Dagger는 앱의 전체 수명 주기 동안 안정적인 의존성 그래프를 생성하고 유지할 수 있습니다. 다음은 Dagger를 사용하여 의존성을 주입하는 간단한 예제입니다.

// Module 정의
@Module
class NetworkModule {
    @Provides
    fun provideRetrofit(): Retrofit {
        // Retrofit 생성 로직
    }
}

// Component 정의
@Component(modules = [NetworkModule::class])
interface AppComponent {
    fun inject(activity: MyActivity)
}

// 주입
class MyActivity : AppCompatActivity() {
    @Inject
    lateinit var retrofit: Retrofit
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // AppComponent를 통해 의존성 주입
        DaggerAppComponent.create().inject(this)
        // 주입된 의존성 사용
        // ...
    }
}

Koin을 사용한 의존성 주입

Koin은 경량의 의존성 주입 프레임워크로, Kotlin으로 작성된 앱에서 사용하기에 이상적입니다. Koin은 쉽게 학습할 수 있고 실용적이며, 안드로이드 앱 개발을 단순화합니다. 아래는 Koin을 사용하여 의존성을 주입하는 간단한 예제입니다.

// 모듈 정의
val myModule = module {
    single { Retrofit.Builder().baseUrl("https://api.example.com").build() }
}

// 주입
class MyActivity : AppCompatActivity() {
    private val retrofit by inject<Retrofit>()
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Koin으로 의존성 주입
        startKoin {
            androidContext(this@MyActivity)
            modules(myModule)
        }
        // 주입된 의존성 사용
        // ...
    }
}

의존성 주입은 안드로이드 앱의 구조를 개선하고 유지보수성을 향상시키는 데 중요한 요소입니다. Dagger와 Koin은 각각의 장단점을 가지고 있으며, 프로젝트의 요구 사항에 맞게 선택하여 사용할 수 있습니다.

이렇게하여, Dagger 및 Koin을 사용하여 안드로이드 앱에 의존성 주입을 적용하는 방법에 대해 간단하게 알아보았습니다.