核心理念
依靠注解编译时生成额外的控制类操作目标对象进行注入。
- 注入物,比如药(medicine)
- 目标对象——屁股(ass)
- 桥梁——针管(needle)
基本注入
集成
- java
implementation 'com.google.dagger:dagger:2.x'
annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
- kotlin
implementation 'com.google.dagger:dagger:2.x'
kapt 'com.google.dagger:dagger-compiler:2.x'
版本号在这里查看。
上来就干
- 注入物
public class Medicine {
private String name;
@Inject //用@Inject标注构造方法
Medicine(){
name = "青霉素";
}
}
- needle
@Component //用Component
public interface Needle { //注意这是个interface
void inject(AssActivity activity);
}
编译之后会自动生成实现类DaggerNeedle
,并且添加相应的方法。
- 屁股
public class AssActivity extends AppCompatActivity {
@Inject
Medicine medicine;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DaggerNeedle.create().inject(this);//通过生成的针管实现类执行注入
setContentView(R.layout.activity_main);
}
}
运行后发现 Ass中的medicine对象不为null,说明注入成功!
干的漂亮
来源:oschina
链接:https://my.oschina.net/JiangTun/blog/3140385