【发布时间】:2021-02-16 13:10:20
【问题描述】:
我正在按照清洁架构原则构建 Android 应用。这是我所拥有的:
应用模块:
- 包含所有 Android 依赖项。
- 将 MVVM 与 Arch 组件中的 ViewModel 结合使用。
- ViewModel 仅与 UseCases 通信,后者是构造函数注入的。
用例模块:
- 包含所有用例。
- 用例只与存储库通信,这些存储库是构造函数注入的。
存储库模块:
- 包含所有存储库。
- 存储库与 Web 服务或数据库等进行通信。
- 我在这一层定义了一个 Retrofit 接口,存储库接受它的构造函数。
数据模块:
- 包含所有数据模型
我正在尝试在应用程序中使用 Hilt 进行依赖注入。我不想将 Retrofit、OkHttp 等暴露给应用程序模块,因为我不希望开发人员能够将网络代码放入错误的模块中。请记住,app 模块使用 ViewModel,它只能与用例对话。
如何设置?我尝试将 dagger 模块放入每个模块中以定义注入,然后在主 app 模块中包含来自用例的模块:
@Module(includes = [UseCaseModule::class])
@InstallIn(ApplicationComponent::class)
object AppModule
但这不起作用,因为它开始抱怨无法在我想隐藏的其他模块中找到传递依赖项。
【问题讨论】:
-
你有什么解决办法吗。
-
我也有同样的问题
标签: android dependency-injection solid-principles clean-architecture dagger-hilt