Dragger2

github dragger2

配置


Android Gradle

// Add plugin https://bitbucket.org/hvisser/android-apt
buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  }
}

// Apply plugin
apply plugin: 'com.neenbedankt.android-apt'

// Add Dagger dependencies
dependencies {
  compile 'com.google.dagger:dagger:2.x'
  apt 'com.google.dagger:dagger-compiler:2.x'
}

原理

使用流程


public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState){
        ...
        User user = new User();
    }
}

//MainActivity 依赖于 User 

//1,构建依赖 
//return new User();

@Module
public class ActivityModule {

    @Provides User provideUser() {
        return new User();
    }
}


//2,构建容器(注射器,关联)Component 
//User --> MainActivity

@Component(modules = ActivityModule.class)
public interface ActivityComponent {
    void inject(MainActivity activity);
}


//3,完成依赖注入 @Inject 
public class MainActivity extends ActionBarActivity 

    private ActivityComponent mActivityComponent;

    @Inject 
    User user;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        mActivityComponent = DaggerActivityComponent
                    .builder()
                    .activityModule(new ActivityModule())
                    .build();
                    
        mActivityComponent.inject(this);
    }
}