ich folgenden Code haben:Java, Abhängigkeitsinjektion Singleton?
public class DummyService {
// Create new DummyModel with default value,
// Set value read from config file
private static final DummyModel INSTANCE = new DummyModel(Play.application().configuration().getString('some-value'));
public static DummyModel get() {
return INSTANCE;
}
}
Und ich benutze es:
DummyService.get().someMethod();
Jetzt versuche ich Unit-Test, der diese DummyService verwenden zu schreiben, aber das ist hart, da DummyModel statische Instanz erstellen ist aus einer Konfigurationsdatei.
Ich versuche, Singleton mit Abhängigkeitsmuster zu erstellen, aber ich weiß nicht wirklich, ob ich es richtig mache. Was ich erstellt:
@Singleton
public class DummyService {
private Configuration config;
private DummyModel dummy;
@Inject
public DummyService(Configuration config) {
this.configuration = config;
this.dummy = new DummyModel(config.getString('some-value'));
}
}
Will ich neue DummyService zu schaffen haben und bieten jedes Mal Config?
Wird DummyModel noch Singleton sein?
Sollte ich Setter oder Ctor inject verwenden?
Kann ich Standardwert config und neuen CTOR zu schaffen, die nicht nur Argumente haben:
private Configuration config = Play.application().configuration();
@Inject
public DummyService() {
this.dummy = new DummyModel(config.getString('some-value'));
}