Java 生成的工厂上的Guice FactoryBuilderModule NullPointerException

Java 生成的工厂上的Guice FactoryBuilderModule NullPointerException,java,dependency-injection,guice,factory,Java,Dependency Injection,Guice,Factory,我是Guice的新手,在这方面做了很多阅读,但我没有在这方面取得任何成功。我基本上是在创建一个DAO,并希望使用Guice和AssistedInjection。实际上,最终目标是在整个应用程序的其他类中创建注入工厂 在实际类中的预期用途,该类将注入工厂,然后从工厂中获取类 public class TestAllModelBootstrap { @Inject private DAOFactory factory; public TestAllModelBootstrap() {

我是Guice的新手,在这方面做了很多阅读,但我没有在这方面取得任何成功。我基本上是在创建一个DAO,并希望使用Guice和AssistedInjection。实际上,最终目标是在整个应用程序的其他类中创建注入工厂

在实际类中的预期用途,该类将注入工厂,然后从工厂中获取类

public class TestAllModelBootstrap {
   @Inject private DAOFactory factory;
   public TestAllModelBootstrap() {
   }

   @Test
   public void testGettingDAO() {
      Injector injector = Guice.createInjector(new HibernateDAOModule());
      Token oToken = new OperTokenV1();
      AccountingDAO accountingDAO = factory.create(oToken);
   }
}
这基于以下基于GUI的代码:

public interface DAOFactory {
    public AccountingDAO create(Token oTicket);
}
混凝土类有一个已注释的构造函数

@Inject
public HibernateAccountingDAO(@Assisted Token oTicket) {

    this.oTicket = oTicket;
}
和实际模块:

@Override
protected void configure() {
    install(new FactoryModuleBuilder()
            .implement(AccountingDAO.class, HibernateAccountingDAO.class)
            .build(DAOFactory.class));

    bind(SessionFactoryInterface.class)
            .toProvider(HibernateSessionProvider.class);
}
每次我尝试运行此命令时: java.lang.NullPointerException->表示:

创建(oToken)

将工厂设置为空。在阅读这个问题的过程中,我被引导相信注射不会像我在“测试”课上使用它那样起作用。它需要放在一个“注入”类中。但是这也不起作用——如果我在另一个类中包装工厂注入,然后尝试使用它,它就不起作用了


任何帮助都将不胜感激……

TestAllModelBootstrap不是来自注入器JUnit创建的,因此Guice还没有机会注入它。Guice只能将其通过
getInstance
创建的对象(以及这些对象的依赖项,递归地)或传递到的对象或使用请求的现有实例中注入

您可以手动获取factory实例:

factory = injector.getInstance(DAOFactory.class);
或要求Guice使用以下方法注入您的成员:


或者使用类似于在应用程序中注入测试用例的工具。

非常感谢-在我所有的搜索中,没有任何方法将“注入”与问题联系起来。这一点很清楚,使用factory=injector.getInstance(…)可以很好地获取工厂,而不必生成使用工厂Guice的类。
injector.injectMembers(this); // sets the @Inject factory field