-
반응형
Koin이란?
Koin은 순수 코틀린으로 사용하는 DI를 위한 라이브러리 입니다.
Dagger에 비해 학습곡선이 낮아 쉽게 사용할 수 있습니다.
DI란?
의존성 주입(Dependency Injection)의 줄임말 입니다.
A라는 클래스가 B라는 클래스를 참조하고 있으면 A가 B에게 의존성을 갖는다고 할 수 있습니다.
그러므로 B 클래스가 변경이 되면 의존성을 갖는 A 클래스도 같이 변경 해야 한다는 문제점이 있습니다.
이러한 문제점을 의존성 주입을 통해서 해결을 할 수 있습니다.
DI를 사용하면 이러한 장점들이 있습니다.
- 재사용성을 높여줍니다.
- 테스트에 용이합니다.
- 코드를 단순화 시켜줍니다.
- 종속된 코드를 줄여줍니다.
- 결합도를 낮추면서 유연성과 확장성이 향상됩니다.
DI에 관련된 공부는 이 프로젝트를 보면 도움이 많이 됩니다.
Koin - viewModel 활용
Koin을 사용하려면 일단 app에 해당 코드를 작성 해줘야 합니다.
// Koin for Kotlin implementation "org.koin:koin-core:$koin_version" // Koin Extended & experimental features implementation "org.koin:koin-core-ext:$koin_version" // Koin for Unit tests testImplementation "org.koin:koin-test:$koin_version"
repositories { jcenter() }
Module 생성
val appModule = module { single<myRepository> { MyRepositoryImpl() } viewModel { MyViewModel(get()) } }
Module을 생성할때 single 과 factroy을 사용 하는데
single은 한번만 생성해서 싱글톤 처럼 사용할 때 만들고
factroy은 사용할 때 마다 생성해서 사용할 때 씁니다.
- Application 생성
class MyApplication : Application(){ override fun onCreate() { super.onCreate() startKoin{ androidLogger() androidContext(this@MyApplication) modules(appModule) } } }
그 다음 Application을 생성해 만들었던 Module을 적용시켜줍니다.
- Activity에 viewModel 생성
class MyViewModelActivity : AppCompatActivity() { val myViewModel: MyViewModel by viewModel() }
Activity에 한 줄만 추가하면 Koin 적용이 완료됩니다.
반응형'Android' 카테고리의 다른 글
BindingAdapter에서 margin 설정하기 (0) 2020.09.24 [Android] Task (0) 2020.09.02 Dialog Fragment round corners (0) 2020.09.02 Android key hash 구하기 (1) 2020.09.02 Permission 요청하기 ( api 23 이상) (0) 2020.09.02