Dagger 2 - 缺少构造函数注入示例
Dagger 2 - Lack of Constructor Injection example
我花了几个小时搜索,但我仍然没有找到任何关于使用 Dagger 2 进行构造函数注入的明确示例。
假设我有以下声明,我如何使用 Dagger 2 注入在某处创建 class B 的实例?
@Module
public class ClassA {
@Provides public ClassA provideA(){
return new ClassA();
}
}
public class ClassB{
private ClassA a;
@Inject public ClassB(ClassA a){
this.a = a;
}
}
如果你有
@Module
public class ModuleA {
/*unscoped*/ @Provides public ClassA provideA(){
return new ClassA();
}
}
/*unscoped*/
public class ClassB{
private ClassA a;
@Inject public ClassB(ClassA a){
this.a = a;
}
}
那么你需要
/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
ClassA classA();
ClassB classB();
}
然后你可以这样访问
MyComponent component = DaggerMyComponent.create();
ClassB classB = component.classB();
或
/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
ClassA classA();
ClassB classB();
void inject(MyClass myClass);
}
和
public class MyClass {
@Inject
ClassB classB;
public void init() {
MyComponent component = getComponent();
component.inject(this);
}
}
我花了几个小时搜索,但我仍然没有找到任何关于使用 Dagger 2 进行构造函数注入的明确示例。
假设我有以下声明,我如何使用 Dagger 2 注入在某处创建 class B 的实例?
@Module
public class ClassA {
@Provides public ClassA provideA(){
return new ClassA();
}
}
public class ClassB{
private ClassA a;
@Inject public ClassB(ClassA a){
this.a = a;
}
}
如果你有
@Module
public class ModuleA {
/*unscoped*/ @Provides public ClassA provideA(){
return new ClassA();
}
}
/*unscoped*/
public class ClassB{
private ClassA a;
@Inject public ClassB(ClassA a){
this.a = a;
}
}
那么你需要
/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
ClassA classA();
ClassB classB();
}
然后你可以这样访问
MyComponent component = DaggerMyComponent.create();
ClassB classB = component.classB();
或
/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
ClassA classA();
ClassB classB();
void inject(MyClass myClass);
}
和
public class MyClass {
@Inject
ClassB classB;
public void init() {
MyComponent component = getComponent();
component.inject(this);
}
}