1、导入必要jar包
//在项目builde.gradle中配置
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
//用于Dagger2 在rebuildeProject 的时候自动生成代码
}
//在app中的build.gradle中添加
compile 'com.google.dagger:dagger:2.0.2' // dagger2
compile 'com.google.dagger:dagger-compiler:2.0.2' // dagger2
provided 'javax.annotation:jsr250-api:1.0' // Java标注 PS:这个如果不添加的话编译会出现
Generated注解不存在的错误
2、在实体类中定义一个构造方法,构造方法上用注解@Inject来进行注解,用于生成对象(一般情况)。
如:
//构造方法只能有一个
public class Teacher {
@Inject
public Teacher() {
}
public String name;
public int age;
@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
3、定义Component接口,用于指向需要注入该对象的类。
如:
@Component
public interface MainActivityComponent {
void inject(MainActivity activity);
}
4、在需要该对象的类中用@Inject注解进行注入。
如在MainActivity中:
@Inject
Teacher mTeacher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DaggerMainActivityComponent.create().inject(this);
至此,就可以初步使用Dagger2进行一般的依赖注入了。
但是有时候需要注入的对象是第三方的,我们已经没办法向里面进行@Inject注解指定构造方法了。
另一种情况当需要进行依赖倒置的时候,(即子类继承抽象类,另一个类以抽象类作为引用接受子类)
这两种情况都不适用只用@Inject注解 而要用到@Module和@Provide