오늘은 Hilt를 이용한 의존성 주입 방법을 공부해봤다.
의존성이란? -> 하나의 코드가 다른 코드에 의존하는 상태.
class A{
new b = newB()
}
class B{
}
여기서 클래스 A는 클래스 B를 사용하기 때문에 A는 B에 의존적이다.
의존성이 감소한다 - 변화에 강함, 재사용성이 좋아짐, 유지보수 용이
코드양 감소
테스트 용이
위와같은 장점들이 있어서 의존성을 주입한다.
나는 build.gradle.kts를 사용중이다.
Project수준에서
plugins{
id("com.google.dagger.hilt.android") version "2.49" apply false
}
그리고 Module수준에서
plugins{
id ("kotlin-kapt")
id ("com.google.dagger.hilt.android")
}
..
dependencies {
implementation ("com.google.dagger:hilt-android:2.49")
kapt ("com.google.dagger:hilt-android-compiler:2.49")
}
@HiltAndroidApp
class MyApplication : Application() {
}
애플리케이션 클래스에 Hilt설정을 추가해준다. 애플리케이션 클래스를 만들거나 기존의 애플리케이션 클래스를 열어 위와같이 수정해준다.
class Car @Inject constructor() {
fun buttonClicked(){
Log.d("DIchecking", "Car Button Clicked")
}
}
예를 들어 Car클래스를 만들고 의존성 주입을 받을 필드를 추가해준다.
먼저 화면은 버튼하나로 구성했다. 버튼의 id는 button이다.
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var car: Car
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener { car.buttonClicked() }
}
}
<application
android:name=".MyApplication"
Hilt설정을 추가할때 새롭게 애플리케이션을 만들었다면 manifest에서 android:name을 해당 클래스의 이름으로 설정해준다.
모든 구성 완료후 실행을 누르면 Log창에 Car Button Clicked이 성공적으로 나올 것이다.