ich eine Klasse Api haben mit Dependency Injection, mit einer Funktion, die diese Injektion verwenden:2.5 scala Import-Klasse mit Dependency Injection
class Api @Inject()(userRepo: UserRepo) extends Controller {
def user(email: String) ={
userRepo.getUser(email).map(....)
}
}
Und ein Objekt FlashSession im selben Paket - ich bin Verwenden Sie es in vielen anderen Dateien. Ich möchte die Funktion Benutzer in meinem Obj FlashSession verwenden.
object FlashSession {
def test = ... Api.user("[email protected]") ....
}
Aber ich kann die Api Klasse nicht importiert werden, weil es sich um eine Klasse und nicht ein Objekt ist, und ich kann diese Funktion nicht in das compagnon Objekt setzen, weil es DI braucht.
Was ist der beste Weg, damit umzugehen?
Vielen Dank für Ihre Hilfe!
Danke, aber effektiv ist es nicht genau das, was ich wollte, weil ich die Api-Klasse als Controller verwende. Aber ich kann deine Antwort anpassen und etwas damit machen. Was meinen Sie mit "nicht globale Begleiter Objekte mit DI verwenden"? Es bedeutet, dass Ihre Lösung nicht sehr gut ist, oder? – Lauriane
Ja, die Verwendung von Konstruktor DI erfordert eine gewisse Anpassung des Codes. Sie sollten einfach benötigte Klassen über Konstruktor übergeben und dann globale Objekte verwenden. @ Bruce-Lowe Antwort unten zeigt einen guten Einblick in diesen Ansatz. – liosedhel