Dagger2的使用(0):

本文详细介绍如何在Android项目中引入并使用Dagger2进行依赖注入。从添加必要的jar包开始,逐步介绍如何通过注解定义依赖关系,创建Component接口,并在Activity中注入依赖对象。此外还探讨了在第三方类和依赖倒置场景下的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值