Dagger2的使用(0):

来源:互联网 发布:datagridview添加数据 编辑:程序博客网 时间:2024/05/01 21:26

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 {@Injectpublic Teacher() {}public String name;public int age;@Overridepublic String toString() {    return "Teacher{" +            "name='" + name + '\'' +            ", age=" + age +            '}';}}

3、定义Component接口,用于指向需要注入该对象的类。

如:

@Componentpublic interface MainActivityComponent {    void inject(MainActivity activity);}

4、在需要该对象的类中用@Inject注解进行注入。

如在MainActivity中:

@InjectTeacher mTeacher;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    DaggerMainActivityComponent.create().inject(this);

至此,就可以初步使用Dagger2进行一般的依赖注入了。

但是有时候需要注入的对象是第三方的,我们已经没办法向里面进行@Inject注解指定构造方法了。

另一种情况当需要进行依赖倒置的时候,(即子类继承抽象类,另一个类以抽象类作为引用接受子类)

这两种情况都不适用只用@Inject注解 而要用到@Module和@Provide

0 0