昨天稍微讲解了Dependency Injection,今天要来介绍dagger了。
经常使用的annotation
public class Fruit {
private String name;
private String price;
public Fruit(String name, String price){
this.name=name;
this.price=price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
提供Fruit
需要的依赖实例。
@Named
@Named("Name")将他回传的String命名为Name, 当使用provideFruit(@Named("name")String name,@Named("price")String price)需要其中的
@Named("name")String name`时,就能找到对应的String。
@Module
public class Fruit1Module {
private String name;
private String price;
public Fruit1Module(String name,String price){
this.name=name;
this.price=price;
}
//表示回传的string会传入Fruit.class
@Provides
Fruit provideFruit(@Named("name")String name,@Named("price")String price){
return new Fruit(name,price);
}
@Provides
@Named("name")
String provideFruit1Name(){
return name;
}
@Provides
@Named("price")
String provideFruit1Price(){
return price;
}
}
@Component(modules = Fruit1Module.class)标记要引用的Module
@Component(modules = Fruit1Module.class)
public interface Fruit1Component {
void inject(Test1Activity test1Activity);//代表Fruit1Component注入到Test1Activity,那麽在Test1Activity可使用@inject注解变量生成实例。
}
使用@Inject 注入Fruit class让Fruit被赋值。
按下build->rebuild project(快速键ctrl+f9)
进行compile,编译完dagger会产生DaggerFruit1Component
。使用如下:
public class Test1Activity extends AppCompatActivity {
private Fruit1Component fruit1Component;
@Inject
Fruit fruit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test1);
setting();
}
private void setting() {
fruit1Component= DaggerFruit1Component.builder() //将实体建立
.fruit1Module(new Fruit1Module("apple","20"))
.build();
fruit1Component.inject(this); //将建立完的实体inject到Test1Activity
String text = fruit.getName();
Log.d("fruit",text);
}
}
log结果:
<<: 分布式可观测性 Tracing、Time Series Data、LSM浅谈
接续前面的内容,还有几个东西没有研究到... 3. mutations 前面是学到的向仓库取资料的办...
由於今天比较晚才到家,所以可能内容会比较少一点。 另外今天在火车上看到github上面有几个开源的 ...
引注资料 https://blog.csdn.net/weixin_43184622/article...
相信各位看官们很熟悉各种Html的Events事件, 这篇呢~我们要透过上一篇所提到的State传入...
比较下面两个用法: <!-- computed --> <div>{{ re...