Skip to content

Instantly share code, notes, and snippets.

public class CleanArchitectureApplication extends Application{
private static BaseComponent sBaseComponent;
@Override
public void onCreate() {
super.onCreate();
ApplicationComponent applicationComponent = DaggerApplicationComponent
.builder()
public BaseComponent build() {
if (localModule == null) {
this.localModule = new LocalModule();
}
if (networkModule == null) {
this.networkModule = new NetworkModule();
}
if (applicationComponent == null) {
throw new IllegalStateException("applicationComponent must be set");
}
@Component(dependencies = {BaseComponent.class})
public interface ActivityInjectorComponent {
void inject(MainActivity activity);
}
public class MainActivity extends AppCompatActivity {
@Inject
TweeterApi tweeterApi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//dagger 2 implementation of a module
@Module
public class MyModule {
@Provides
public MyDependency providesMyDependency(){
return new MyDependency();
}
@Provides
@Inject //Constructor Injection
public AnotherClass(MyDependency myDependency){
}
@Inject //Field Injection
MyDependency myDependency;
@Inject //Method Injection
public void myMethod(MyDependency myDependency){
public class AnotherClass {
private final MyClass myClass;
public AnotherClass(MyClass myClass){
this.myClass = myClass;
}
}
public class Main{
public class DependencyFactory{
private static MyDependency myDependency;
private static MyClass myClass;
public static MyDependency providesMyDependency(){
if(myDependency == null){
myDependency = new MyDependency();
}
return myDependency;
public class AnotherClass{
private final MyClass myClass;
//Good!
public AnotherClass(MyClass myClass){
this.myClass = myClass;
}
}
public class MyDependency {}
public class MyClass {
private MyDependency dependency;
public MyClass(MyDependency myDependency){
this.dependency = myDependency;
}
}