Dependency injection 方法上的Guice依赖项注入,第一步
我正在使用Java1.6和Guice3.0,我正在尝试让依赖注入工作起来。 我想从手动依赖注入切换到guice 这是我的类,我想在这里使用依赖项:Dependency injection 方法上的Guice依赖项注入,第一步,dependency-injection,guice,Dependency Injection,Guice,我正在使用Java1.6和Guice3.0,我正在尝试让依赖注入工作起来。 我想从手动依赖注入切换到guice 这是我的类,我想在这里使用依赖项: public class QSManager implements IQSManager { private IPdfManager pdfManager; @Inject public void setPdfManager(IPdfManager pdfManager){ this.pdfManager =
public class QSManager implements IQSManager {
private IPdfManager pdfManager;
@Inject
public void setPdfManager(IPdfManager pdfManager){
this.pdfManager = pdfManager;
}
@Singleton
public class PdfManager implements IPdfManager {
这是我的经理模块
public class PdfManagerModule implements Module {
@Override
public void configure(Binder binder) {
binder.bind(IPdfManager.class).to(PdfManager.class).in(Singleton.class);
}
}
以及我想要的依赖:
public class QSManager implements IQSManager {
private IPdfManager pdfManager;
@Inject
public void setPdfManager(IPdfManager pdfManager){
this.pdfManager = pdfManager;
}
@Singleton
public class PdfManager implements IPdfManager {
但如果我运行它,它永远不会注入依赖项。例如:
有人能给我指出正确的方向或指出错误吗?谢谢大家! 将配置中的接口绑定到:
bind(IQSManager.class).to(QSManager.class);
并使用Guice创建QSManager
,而不是使用new
:
Injector-Injector=Guice.createInjector(新的PdfManagerModule());
IQSManager manager=injector.getInstance(IQSManager.class);
manager.test();
即使我想将PdfManager注入我的QSManager?是的Guice
在QSManager创建该实例时为其注入依赖项。如果只使用new
,则会绕过Guice。看看@MemLeak,甚至不是,而是因为你想要它。如果您希望依赖项注入工作,则必须在任何需要新实例的地方使用DI容器。毕竟,如果你不告诉Guice,Guice怎么知道你想注射什么呢?真的很抱歉,这是我思维中的一个逻辑问题。在GoogleIO演示中,他们说:在调用构造函数之后,会发生带有setters的DI。但是guice应该如何知道何时调用ctr呢。谢谢你们!当你是DI新手时的一个提示:永远不要使用“新”。。。