ecb*_*die 4 java inheritance dependency-injection guice constructor-injection
有一个关于如何使用吉斯提供商绑定到一个通用类,如很多网络资源的维基条目这样和这样的SOF的问题.但是,我无法找到有关如何使用通用本身的提供程序的资源.
例如,假设我有以下内容:
public interface Foo {
...
}
public class Bar implements Foo {
...
}
Run Code Online (Sandbox Code Playgroud)
如您所见,Bar有一个注入参数,必须在构造函数中.在我的情况下,我们无法将此参数移动到字段或方法注入.
所以,现在我想为Foo编写一个Provider,但它返回一个Bar实例.像这样的东西:
@Singleton
public class FooProvider<T extends Foo> extends Provider<Foo> {
@Inject
public FooProvider(Object someParameterWeMustInjectIntoConstructor) {
...
}
...
@Override
public Foo get() {
return new Bar(...);
}
...
}
Run Code Online (Sandbox Code Playgroud)
注意这个类是如何依赖于Guice注入本身的单例,因此必须使用配置Provider .toProvider(FooProvider.class).我们也只能使用构造函数注入而不是方法和字段注入,可能是因为具有此Provider的类型层次结构.
我试图找到某种使用方式.toProvider(FooProvider<Bar>.class),但我们都知道这不是有效的Java语法.有谁知道我如何.toProvider(Class<? extends Provider>)在模块中使用Guice绑定器的方法,所以我可以使用通用的Provider来创建一个具体的实现类?如果我的问题有点令人困惑,请告诉我.
| 归档时间: |
|
| 查看次数: |
3974 次 |
| 最近记录: |