我是 Guice 的新手,所以如果这是一个愚蠢的问题,请原谅,但我觉得这很令人沮丧。
在我的模块中,我构造了一个对象,它是我无法控制的框架的成员。然后我绑定该实例,以便以后可以使用 injector.getInstance(FrameworkClass.class); 访问它。
当我构造该对象时,我想使用我自己的对象之一,该对象本身被注释为由构造函数注入。
IE
public class MyClass {
OtherClass dependency;
@Inject
Public MyClass(OtherClass dependency) {
....
}
}
public class AModule extends AbstractModule {
protected void configure() {
MyClass frameworkDependency = ???
FrameworkClass fc = new FrameworkClass(frameworkDependency);
bind(FrameworkClass.class).toInstance(fc);
}
}
在此示例中,OtherClass 只是一个没有注释的简单类,但有一个默认的空构造函数,因此据我所知,Guice 应该只新建一个并将其提供给 MyClass 构造函数。
我的问题是如何在我的模块中访问 MyClass 的新实例,以便我可以将它提供给框架类?
以前我通过 Field Injection 注入了我自己的类,所以它看起来像这样:
public class MyClass {
@Inject
OtherClass dependency;
}
public class AModule extends AbstractModule {
protected void configure() {
MyClass frameworkDependency = new MyClass();
requestInjection(frameworkDependency);
FrameworkClass fc = new FrameworkClass(frameworkDependency);
bind(FrameworkClass.class).toInstance(fc);
}
}
如果可能的话,我宁愿将 MyClass 作为构造函数注入。