【发布时间】:2021-10-17 19:02:05
【问题描述】:
@Inject 和@Provide 有什么区别?
虽然两者都是用来提供依赖的,但是有什么区别呢?
【问题讨论】:
标签: android kotlin dagger-2 dagger
@Inject 和@Provide 有什么区别?
虽然两者都是用来提供依赖的,但是有什么区别呢?
【问题讨论】:
标签: android kotlin dagger-2 dagger
documentation、@Inject 和@Provides 很好地涵盖了这一点,它们是在依赖关系图中引入依赖关系的两种不同方式。它们适用于不同的用例
@Inject@Inject即可完成@Provides 更清晰@Provides@Inject 标记它的构造函数
@Inject 的选项
@Provides 注释的方法,该方法返回接口类型以下是@Provides以上三点的例子
// You can't mark constructor of String with @Inject but you can use @Provides
@Provides
fun provideString(): String {
return "Hello World"
}
@Provides
fun provideCar(): Car {
val car = Car()
// Do some configuration before introducing it in graph, you can't do this with @Inject
car.setMaxSpeed(100)
car.fillFuel()
return car
}
interface Logger { fun log() }
class DiscLogger : Logger{ override fun log() { } }
class MemoryLogger : Logger { override fun log() { } }
@Provides
fun provideLogger(): Logger {
val logger = DiscLogger() \\ or MemoryLogger()
return logger
}
【讨论】:
@Inject:- 用于在类中注入依赖项。 @provides:- 需要在创建实际实例的地方使用 @provide 注释方法。
【讨论】: