Hilt依赖注入

本文介绍了Android开发中的Hilt依赖注入,它是Dagger的Android场景化产物,简化了依赖注入的过程。Hilt通过在组件的构造函数中添加注解实现依赖注入,支持Activity、Fragment等Android类。Hilt模块(@Module)用于提供第三方库、接口等无法直接构造的依赖,并通过@Binds和@Provides注解来声明和提供实例。@Inject注解用于字段、构造函数和方法,标记需要注入的对象。
摘要由CSDN通过智能技术生成

控制反转(IOC)

如果一个类A 的功能实现需要借助于类B,那么就称类B是类A的依赖,如果在类A的内部去实例化类B,那么两者之间会出现较高的耦合,一旦类B出现了问题,类A也需要进行改造,如果这样的情况较多,每个类之间都有很多依赖,那么就会出现牵一发而动全身的情况,程序会极难维护,并且很容易出现问题。要解决这个问题,就要把A类对B类的控制权抽离出来,交给一个第三方去做,把控制权反转给第三方,就称作控制反转(IOC Inversion Of Control)。控制反转是一种思想,是能够解决问题的一种可能的结果,而依赖注入(Dependency Injection)就是其最典型的实现方法。由第三方(我们称作IOC容器)来控制依赖,把他通过构造函数、属性或者工厂模式等方法,注入到类A内,这样就极大程度的对类A和类B进行了解耦。

依赖注入(DI)

DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

依赖注入的使用场景

一个类里有两个变量,这两个变量就是它的依赖:

public class People {
    private String name;
    private int age;
}

要初始化一个依赖,有两种方法:第一,你这个类自己初始化:

 public People() {
        this.name = "tom";
        this.age = 12;
    }

另外一个就是通过外部初始化:

 public People(String name, int age) {
        this.name = name;
        this.age = age;
    }

其中这第二种,让外部帮你初始化People类的依赖,就叫依赖注入。关键在于初始化是谁做的,至于最后一步是把结果拿过来,还是说连拿都不用拿,最后一步的赋值工作直接通过set方法设置,这都不重要,只要初始化工作是外部做的,就都叫依赖注入。

所以通过带参数的构造方法new对象,通过Factory或者Builder直接获得想要的对象都是依赖注入

Public class PeopleFactory{
   public static People getChinesePeople() {
       People ChinesePeople = new People();
       ChinesePeople.setName("张三");
       ChinesePeople.setAge(20);
   } 
}
class PeopleBuilder{
    private String name;
    private int age;
    
    public void name(String name) {
        this.name = name;
    }
    
    pulbic void age(int age) {
        this.age = age;
    }
    
    public People build(){
        return new People(name, age);
    }
}

Hilt

Hilt是基于 Dagger实现的自动化依赖注入工具,Hilt 会自动找到 Android 的系统组件里面那些最佳的初始化位置——比如 Activity 的 onCreate() ,然后在这些位置注入依赖,所以Hilt是Dagger基于android场景化的产物。

Hilt引入

首先,将 hilt-android-gradle-plugin 插件添加到项目的根级 build.gradle 文件中:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值