目录
Dagger2入门(一)—— Dagger2优点
Dagger2入门(二)—— Dagger2的简单使用
Dagger2入门(三)—— Dagger2的高级用法
@Qualifier & @Named
@Qualifier
: 标记在inject和provides上用于匹配对应关系
@Name
: 一种框架默认实现的Qualifier
,通过字符串匹配
当一个Modules中有相同类型返回值的provides时,dagger2会报编译时错误,这时我们需要用Qualifier区分两个provides分别应该注入到什么地方。
@Scope & @Singleton
@Scope
: 标记在Componet和provides上,用于管理生命周期,表示在Componet生命周期里只有一个provides提供的实例
@Singleton
: 一种由框架默认实现的Scope
一般我们会自定义不同的Scope来表示不同的生命周期类型,比如Activity级别,Application级别
Component#dependencies & @Subcomponent
Component#dependencies
: 静态管理Component的依赖,Component可以将dependencies指定的依赖注入到自己当中。
@Subcomponent
: Component的一种,可以动态的管理依赖依赖,当Componet提供Subcomponent的接口时,Subcomponent和Component就建立了依赖关系,Subcomponent依赖于Componenet;
一般我们用Subcomponent管理有生命周期关联的依赖。
Lazy<T>
Lazy<T>:泛型,Lazy依赖不会马上被注入,而是需要等到get的时候才会被注入