Dagger2是什么?
Dagger2是Dagger的升级版,是一个依赖注入框架,第一代由大名鼎鼎的Square公司共享出来,第二代则是由谷歌接手后推出的,现在由Google接手维护.
依赖
依赖是指某个模块A要实现某个功能需要其他模块B。
最原始也最简单的的方式是在模块内new一个B的对象出来,这样会造成B的构造函数修改,需要修改A中的代码,两者耦合度非常高。
依赖注入
依赖注入是不在A中去创建 B的实例,而是让上层调用者注入一个B的对象,这样可以让模块A不再因为B的构造方法的修改而改变
dagger2导包
implementation 'com.google.dagger:dagger:2.23.2'
annotationProcessor 'com.google.dagger:dagger-compiler:2.23.2'
dagger2基本使用
创建注入提供者类
提供者创建构造方法
给构造方法添加@Inject注解,表明对外提供依赖,并写个方法
public class Utils1 {
@Inject
//提供给其他类使用
public Utils1(){
}
public void show(){
Log.e("########",“utils1—show”);
}
}
在接收注解方创建提供注解类的对象并添加@Inject注解,表明这个对象需要注入
@Inject
//使用其他类
Utils1 utils1;
创建注解的桥梁,或者叫注入者。注入者是一个接口,需要用@Component注解,并且提供一个方法用来表示向谁注入。
@Component
//提供桥梁
public interface Utils1Compont {
void inject(Main2Activity main2Activity);
}
注意到这里可以锤了
在调用类中加载Dagger,然后就可以调用了
DaggerUtils1Compont.builder().build().inject(this);
dagger2基本使用2-仓库
创建连接仓库类,仓库类需要@Module来注解表示这是仓库
带仓库的dagger也需要一个接口桥梁,这个桥梁注解需要参@Component(modules={UserModule.class})
可以锤了
在调用类中加载Dagger,然后就可以调用了,加载Dagger时需要将仓库带入