我需要使用工厂才能在 Jersey 中注入一个简单的对象吗?
Do I need to use a factory in order to inject a simple object in Jersey?
从现在开始,为了将 Foo 类型的对象注入 Bar,我执行以下操作。
Class 注入:
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 中,是否可以在不创建工厂的情况下注入对象 class?
可以使用 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。
从现在开始,为了将 Foo 类型的对象注入 Bar,我执行以下操作。
Class 注入:
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 中,是否可以在不创建工厂的情况下注入对象 class?
可以使用 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。