到目前为止,为了将一个Foo类型的对象注入Bar,我执行以下操作。
要注入的类:
class Bar {
@Inject
Foo field;
public Foo getField() { return field; }
}
代码实施工厂:
public class Foo implements Factory<Foo> {
@Override
public Foo provide() {
return new Foo();
}
@Override
public void dispose(Foo f) {
}
}
主要配置中的代码:
final ResourceConfig rc = new ResourceConfig()
.packages("com.example")
.register(
new AbstractBinder() {
@Override
protected void configure() {
bindFactory(new FooFactory()).to(Foo.class).in(Singleton.class);
}
})
我的问题是......在使用hk2进行依赖注入的Jersey 2.0中,无论如何都要注入一个对象而不创建工厂类?
答案 0 :(得分:1)
可以在没有AbstractBinder
或Factory
的情况下使用InjectionResolver
进行注射绑定。
register(new AbstractBinder() {
@Override
protected void configure() {
bind(Foo.class).to(Foo.class);
bind(Bar.class).to(Bar.class);
}
});
在这种情况下,类Foo和Bar具有空构造函数。
public class Bar {
@Inject
Foo field;
public Foo getField() { return field; }
}
public class Foo {}
现在您可以将Bar注入资源或其他hk2 bean。