0

我使用带有 guice 3.0 的 Java 1.6 并试图让依赖注入工作。我想从手动依赖注入切换到 guice。

这是我的班级,我想使用依赖项:

public class QSManager implements IQSManager {
    private IPdfManager pdfManager;
    @Inject
    public void setPdfManager(IPdfManager pdfManager){
        this.pdfManager = pdfManager;
    }

这是我的经理模块

public class PdfManagerModule implements Module {

    @Override
    public void configure(Binder binder) {
         binder.bind(IPdfManager.class).to(PdfManager.class).in(Singleton.class);
    }
}

和我想要的依赖:

@Singleton
public class PdfManager implements IPdfManager {

但是如果我运行它,它永远不会注入依赖项。例如:

  1. 我创建主应用程序:QSManager manager = new QSManager(params);
  2. 我尝试注入: manager.test() 其中 test 是 System.out.println(pdfManager); 返回 null

谁能指出我正确的方向或告诉我错误?谢谢!

4

1 回答 1

1

在您的配置中绑定该接口:

bind(IQSManager.class).to(QSManager.class);

并使用 Guice 创建您的QSManager而不是使用new

Injector injector = Guice.createInjector(new PdfManagerModule());
IQSManager manager = injector.getInstance(IQSManager.class);
manager.test();
于 2013-05-15T14:29:07.420 回答