작성
·
367
1
원래는 Factory를 통해 repository 등 viewmodel에서 사용할 것들을 전달해 주었습니다!
원래 했던 프로젝트에서도 다음과 같이 프래그먼트에서 viewmodel을 다음과 같이 선언하여 팩토리를 넘겨주어 구현했었습니다.
private val viewModel: BoardDetailViewModel by viewModels {
BoardViewModelFactory()
}
이제 의존성주입을 공부하고 있어 실제 프로젝트에서도 적용해보려고 하는데, 궁금한 점이 있어 글을 작성합니다.
만일 이번 강의와 같이 의존성주입을 하게되면 ViewModel에 있는 Repository를 위와 같이 팩토리를 통해 전달하지 않고 다음과 같이 적어줘도 실행되는 이유가 무엇인가요?
private val bookViewModel by viewModels<BookViewModel>()
분명히 BookViewModel에는 Repository를 생성자로 받으라고 나와있는데, 위에 저렇게만 적어줘도 실행되는 이유가 궁금합니다! 아직 의존성주입에 대해 이해를 못했는지... 잘 이해가 가지 않습니다!
항상 좋은 강의 감사드립니다 :)
답변 1
0
의존성 주입을 사용하지 않으면 액티비티에서 > 리포지토리 인스턴스를 만들어서 > 팩토리를 통해 > 뷰모델에 전달해야 합니다.
그런데 의존성 주입을 위해 Hilt를 쓰면 Hilt가 직접 리포지토리 인스턴스를 만들어서 > 뷰모델에 주입 해줍니다. 팩토리가 필요없어지게 되는 이유지요.
답변 감사합니다 :)