Ich habe einen dedizierten Thread-Pool für Datenbankoperationen über die Play-Akka-Konfigurationsdatei zugewiesen. Im Moment injiziere ich die Dienste, die diesen Thread-Pool mit dem Actor-System benötigen und auf den Ausführungskontext zugreifen.Wie injiziere ich einen benutzerdefinierten Executor in eine Play-Anwendung?
public class ServiceA{
final Executor executionContext;
@Inject
public ServiceA(ActorSystem system) {
this.executionContext = system.dispatchers().lookup("akka.actor.db-context");
}
Aber das macht es schwierig, ServiceA zu testen. Was ich stattdessen tun möchte, ist nur den Executor direkt wie folgt injizieren:
Wie erreiche ich das? Ich habe versucht, ein Guice-Modul zu erstellen, um den Executor zu injizieren, aber es gibt Fehler aus, sich zu beschweren, dass es keine gestartete Anwendung gibt und keinen Zugriff auf ActorSystem hat, wenn es die Klassen bindet.
Das ist eine Art, was ich am Ende auch getan habe. Jetzt müssen Sie Methoden wie getDispatcher() aufrufen, aber es ist eine verbesserte Lösung. Ich versuchte herauszufinden, ob es andere Möglichkeiten gäbe, den Executor direkt ohne zusätzliche Methodenaufrufe zu injizieren. – jesukumar