Im Moment, um ein Objekt vom Typ Foo in Bar zu injizieren, mache ich folgendes.Muss ich eine Fabrik verwenden, um ein einfaches Objekt in Jersey zu injizieren?
class Bar {
@Inject
Foo field;
public Foo getField() { return field; }
}
-Code Implementierung ab Werk:
Klasse werden in injiziert
public class Foo implements Factory<Foo> {
@Override
public Foo provide() {
return new Foo();
}
@Override
public void dispose(Foo f) {
}
}
-Code in der Hauptkonfigurations:
final ResourceConfig rc = new ResourceConfig()
.packages("com.example")
.register(
new AbstractBinder() {
@Override
protected void configure() {
bindFactory(new FooFactory()).to(Foo.class).in(Singleton.class);
}
})
Meine Frage ist ... In Jersey 2.0, die hk2 für die Abhängigkeitsinjektion verwendet, gibt es sowieso ein Objekt zu injizieren, ohne eine Factory-Klasse zu erstellen?
Was wäre, wenn die Klasse einen Konstruktor mit Parametern hätte? Müssten all diese Parameter auch @Inject benötigen? – oibe
nicht möglich, Sie können @Inject nur für Felder verwenden oder die Instanz auf diese Weise binden: bind (neuer Balken ("test")). To (Bar.class); –
im Allgemeinen, für komplexere Injektionsanforderungen (z. B. assistierte Injektion) müssen Sie den InjectionResolver oder Factories verwenden. –