注射器如何注射? [英] How to inject Injector?
本文介绍了注射器如何注射?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
FooClass
中的惰性依赖关系实例化,所以我通过 Injector
作为构造函数参数。 private final注射器m_injector;
public FooClass(@Named(FooInjector)注射器注射器){
m_injector =
}
但是,guice不允许绑定核心类(注入器,模块等) )。什么是解决方案?
解决方案
您不应该使用 Injector
直。而是转而使用提供者< FooClass>
。此外,您应该在您使用 FooClass
的地方注入提供程序。
private final Provider&FooClass>供应商;
@Inject
public ClassWhereFooIsUsed(Provider&FooClass> provider){
this.provider = provider;
}
....别的地方
FooClass f = provider.get(); //这是懒惰
Situation: i need lazy dependency instantiation in some FooClass
, so i pass Injector
to class as a constructor parameter.
private final Injector m_injector;
public FooClass(@Named("FooInjector") Injector injector) {
m_injector = injector;
}
But guice doesn't permit to bind core classes (injectors, modules and etc). What is the solution?
解决方案
You should not be using the Injector
directly. Rather pass in the Provider<FooClass>
instead. Also, you should be injecting the provider in the places where you use FooClass
.
private final Provider<FooClass> provider;
@Inject
public ClassWhereFooIsUsed(Provider<FooClass> provider) {
this.provider = provider;
}
.... somewhere else
FooClass f = provider.get(); // This is lazy
这篇关于注射器如何注射?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文