Dagger2的学习

Dagger :是安卓依赖注入框架。方便管理对象的初始化与使用。

关于相关注解
@Inject:
在需要注解的变量之前添加。也就是在需要依赖的地方使用这个注解。
@Provide:
对方法进行注解,都是有返回类型的。在Module中以此来告诉Dagger我们想要构造对象并提供这些依赖。
@Module:
Modules类里面的方法专门提供依赖,定义一个被@Module注解的类,Dagger就会知道在哪里找到依赖来满足创建类的实例。
@Component:
注入器。是@Inject和@Module之间的桥梁,主要职责是把二者组合在一起。@Component注解用来标记接口或者抽象类。所有的components都可以通过它的modules知道它所提供的依赖范围。
@Scope:
作用域。Dagger2通过自定义注解来限定作用域。所有的对象都不再需要知道怎么管理它自己的实例。Dagger2中有一个默认的作用域注解@Singleton,通常在Android中用来标记在App整个生命周期内存活的实例。也可以自定义一个@PerActivity注解,用来表明生命周期与Activity一致。换句话说,我们可以自定义作用域的粒度(比如@PerFragment, @PerUser等等)。
@Qualifier:
限定符,当一个类的类型不足以标示一个依赖的时候,我们就可以用这个注解。在Android中,我们需要不同类型的Context,我们可以自定义标识符注解“@ForApplication”和“@ForActivity”。这样的话,当注解一个Context的时候,我们可以用这个标识符来告诉Dagger我们想提供哪一种Context。Dagger2里面已经存在一个限定符@Named注解。
@SubComponent:
如果我们需要父组件全部的提供对象,这时我们可以用包含方式而不是用依赖方式,相比于依赖方式,包含方式不需要父组件显式显露对象,就可以拿到父组件全部对象。且SubComponent只需要在父Component接口中声明就可以了。

你可能感兴趣的:(Dagger2的学习)