Ich bin neu bei Scala und dem PlayFramework und binversuchen herauszufinden, wie ich eine Abhängigkeit Injection machen kann. Ich möchte im Grunde eine Datei, die eine Eigenschaft sein wird, und diese in einen Controller einschleusen. Mein Problem ist, dass meine Controller-Klasse meine Eigenschaft nicht sieht. Dies ist mein Code
ProfileTrait
package traitss
import play.api.mvc._
trait ProfileTrait extends Controller {
def Addone()
}
Dann versuche ich das in meinen Controller zu injizieren
import java.nio.file.{Files, Paths}
import traitss.ProfileTrait_
import play.api.mvc.{Action, Controller}
import javax.inject._
class Profiles @Inject() (profileTrait: ProfileTrait) extends Controller
{
}
Mein Controller sieht es jedoch nicht, ich versuche hier dem Beispiel zu folgen https://www.playframework.com/documentation/2.5.x/ScalaDependencyInjection . Ich verwende die Play Framework Version 2.50
Antworten:
0 für die Antwort № 1Sie können keine Eigenschaft einfügen, Sie müssen ein Objekt einfügen, das diese Eigenschaft implementiert.
Damit die Abhängigkeitsinjektion funktioniert, müssen Sie dies tunErklären Sie dem Rahmen (Spiel verwendet Guice unter der Haube), wie Sie die Abhängigkeit auflösen, die injiziert werden soll. Es gibt viele Möglichkeiten, dies zu tun, und das hängt von Ihrem Fall ab. Weitere Einzelheiten können Sie sich ansehen Guice-DokumentationDer einfachste Weg im Spiel ist das Erstellen Module.scala
in dein app
Verzeichnis, wenn es nicht schon da ist, und etwas wie folgt:
import com.google.inject.AbstractModule
class Module extends AbstractModule {
override def configure() = {
bind(classOf[ProfileTrait]).toInstance( ... )
}
}
wo in ...
Sie legen die Logik, um das Objekt zu erstellen, das Sie injizieren möchten.