我是一个 guice 新手,试图弄清楚如何使用 FactoryModuleBuilder 在 guice 中实现辅助注入。我查阅了 guice java 文档以实现FactoryModuleBuilder。
我已经按照文档中的说明完成了所有操作。它没有注入工厂。我提到了这个堆栈溢出问题:Guice AssistedInject 不会注入 有同样问题的工厂。它讨论了构造函数注入问题之前的字段注入。我跟着它,我试图使用调用者类调用父类,但我仍然得到空指针异常。这里出了什么问题?
调用者类
public class MAIN {
@Inject private static MyFactory factory;
public static void main(String[] args){
ParentClass newbie = new ParentClass(factory);
}
}
我仍然遇到异常:
Exception in thread "main" java.lang.NullPointerException
at com.pkg.ParentClass.<init>(ParentClass.java:19)
at com.pkg.MAIN.main(MAIN.java:10)
家长班
public class ParentClass {
private final Foo test;
@Inject
public ParentClass(MyFactory factory){
test = factory.create(new HashMap<String,Object>());
}
}
模块实现:ParentModule
public class ParentModule extends AbstractModule{
@Override
protected void configure() {
install(new FactoryModuleBuilder()
.implement(Foo.class, FooImpl.class)
.build(MyFactory.class));
}
}
工厂接口:MyFactory
public interface MyFactory {
Foo create(Map<String,Object> map);
}
类接口:Foo
public interface Foo{
}
类:FooImpl
public class FooImpl implements Foo {
private final Map<String,Object> mapA;
@AssistedInject
public FooImpl(@Assisted Map<String,Object> map){
mapA=map;
}
}