ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Koin 입문기
    Android 2020. 9. 2. 18:48
    반응형

    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

    댓글

Designed by Tistory.