Dagger2的简单使用
1.简介
Dagger2,起源于Square的Dagger,是一个完全在编译期间进行的依赖注入框架,完全去除了反射。
2.环境配置
在build.gradle中配置
3.入门实例
创建一个bean类,看dagger2是如何注入。
正常情况下我们都是new对象,但是使用dagger2呢?
只需要一个@Inject就可以得到这个对象,看似简单,但是里面却又大学问,我们接下来看看dagger2是怎么创建对象的。
这里有两个注解@Module和@Provides,
最后需要一个容器将@Module中提供的类存放进去,然后在与要注入的类做关联:
@Component表示该接口是一个容器并且与MainModule关联,而inject(MainActivity activity);则是暴露给需要注入类的方法。
然后在MainActivity中将MainComponent关联起来:
红框中的代码就是将MainActivity和MainModule通过Component关联起来的代码,程序检测到有@Inject修饰的类时,就会从MainComponent中去找,
并且是有MainModule的@Provides修饰的方法提供的,而DaggerMainComponent则是我们创建完MainComponent后build项目后系统为我们创建的。
最后build运行一下项目:
上上面的图并没有创建bean对象,但是Logcat却打印出来,说明系统确实创建了对象,并且注入到了MainActivity中。
4.最后附上主要注解的作用
注解 | 作用 |
---|---|
@Module | 可以当做一个工厂 |
@Provides | 提供者,该注解通常会返回一个实例 |
@Component | 表示该接口是一个容器并且与MainModule关联 |
@Inject | inject(MainActivity activity),注入实例 |
以上是最基础的Dagger2的用法,Dagger2多用于MVP框架中已达成P层和V层的解耦。