Ich entwickle eine REST-API mit Jersey 2 und ich brauche einige meiner Klassen beim Start instanziiert werden und nicht nur, wenn einige Ressourcenanforderung es auslöst.Was entspricht asEagerSingleton in HK2 in Jersey 2?
Also was ich fragen ist: Wie erreiche ich, dass eine Instanz von SomethingImpl
definiert hier unten beim Start des Servers erstellt wird und nicht nur, wenn jemand die Ressource etwas trifft? In Guice würde ich .asEagerSingleton()
verwenden.
Anwendung:
public class MyApplication extends ResourceConfig {
public MyApplication() {
register(new AbstractBinder() {
@Override
protected void configure() {
bind(" else").to(String.class);
bind(SomethingImpl.class).to(Something.class).in(Singleton.class);
}
});
register(SomeResource.class);
}
}
Etwas:
public interface Something {
String something();
}
public class SomethingImpl implements Something {
@Inject
public SomethingImpl(final String something) {
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
System.out.println(something() + something);
try {
Thread.sleep(4000);
} catch (final InterruptedException e) {
break;
}
}
}
}).start();
}
@Override
public String something() {
return "Something";
}
}
Einige Ressource:
@Path("/")
public class SomeResource {
private final Something something;
@Inject
public SomeResource(final Something something) {
this.something = something;
}
@GET
@Path("something")
public String something() {
return something.something();
}
}
standardmäßig aktivieren Sie können nicht einfach erstellen und eine Instanz von 'SomethingImpl' binden, statt die Bindung Klassentyp? – Kapep
In diesem vereinfachten Code, ja. Aber in meinem realen Code haben die Klassen, die ich instanziiert, Konstruktoren, die mehrere injizierte Objekte nehmen. – Stine