构造函数注入期间的 Dagger Lazy
Dagger Lazy during constructor injection
我意识到用 Dagger 完成 Lazy
注入的推荐方法是将 Lazy
添加到字段注入点。例如,
class Foo {
@Inject lateinit var bar: Lazy<Bar>
fun useBar() = bar.get().doSomething()
}
使用构造函数注入怎么样?我没看到有人这样做过。
class Foo @Inject constructor(private val fizz: Fizz,
private val bar: Lazy<Bar>) {
fun useBar() = bar.get().doSomething()
}
总而言之,在进行 Dagger 惰性注入时,我可以在构造函数中使用 Lazy<Bar>
吗?或者我唯一的选择是将 Lazy<Bar>
移动到字段注入,同时将其他非惰性依赖项保留在通过构造函数注入的相同 class 中?
感谢指点!
构造函数注入与常规字段注入没有区别,Lazy
-wrapped 构造函数参数是可以接受的。
您唯一需要确保的是通过依赖关系图中某处的模块公开依赖关系。
我意识到用 Dagger 完成 Lazy
注入的推荐方法是将 Lazy
添加到字段注入点。例如,
class Foo {
@Inject lateinit var bar: Lazy<Bar>
fun useBar() = bar.get().doSomething()
}
使用构造函数注入怎么样?我没看到有人这样做过。
class Foo @Inject constructor(private val fizz: Fizz,
private val bar: Lazy<Bar>) {
fun useBar() = bar.get().doSomething()
}
总而言之,在进行 Dagger 惰性注入时,我可以在构造函数中使用 Lazy<Bar>
吗?或者我唯一的选择是将 Lazy<Bar>
移动到字段注入,同时将其他非惰性依赖项保留在通过构造函数注入的相同 class 中?
感谢指点!
构造函数注入与常规字段注入没有区别,Lazy
-wrapped 构造函数参数是可以接受的。
您唯一需要确保的是通过依赖关系图中某处的模块公开依赖关系。