使用Dagger2前准备工作
1.配置apt插件
1.配置apt插件(在build.gradle(Project:xxx)中添加如下代码)
2.添加依赖(在build.gradle(Module:app)中添加如下代码)
2.添加Dagger2相关库
- dependencies {
- ...
- compile 'com.google.dagger:dagger:2.4'
- apt 'com.google.dagger:dagger-compiler:2.4'
- //java注解
- compile 'org.glassfish:javax.annotation:10.0-b28'
- ...
- }
- 这样准备工作就做完了,下面就一生产假酒的demo,来理解究竟什么是“依赖注入”。
Demo
1.demo的整体结构
2.代码
- Wine
- Water
- // 这个就是假酒中水的比例了
- public class Water {
- private int num ;
- Water(){
- // 没添水,良心企业
- }
- Water(int num){
- this.num = num ;
- }
- public String getWater(){
- return"添加"+ num + "份水";
- }
- }
- FakeWine
- // 假酒类,这里就是假酒喽
- public class FakeWine {
-
- private final Water water;
- private final Wine wine ;
-
- // @Inject 用于表明这里需要注入。注意:这里的Wine 和 Water 都是靠注入获得的,并没有直接实例化。
- @Inject
- FakeWine(Wine wine,Water water){
- this.wine = wine;
- this.water = water ;
- }
-
- public String getFakeWineInfo(){
- return wine.getWineInfo() + "," + water.getWater() ;
- }
-
- }
- WaterModule
- WineModule
- // 同上
- @Module
- public class WineModule {
-
- @Provides
- Wine provideWine(){
- return new Wine(3) ;
- }
- }
- CreateFakeWine
- // 生成假酒的具体类
- public class CreateFakeWine {
- // @Component 用于将module和inject关联起来
- @Component(modules = {WineModule.class,WaterModule.class})
- interface GetFakeWine{
- FakeWine make() ;
- }
-
- // 这样假酒就生成出来了,具体兑多少水和真酒,在module中修改,无需修改其他地方
- public static void main(String args[]){
- System.out.println(DaggerCreateFakeWine_GetFakeWine.builder().build().make().getFakeWineInfo());
- }
- }