Ich habe einen Controller:Ist es möglich, Scala-Selbst-Typen mit guice zu verwenden?
class HomeController @Inject() (cc: ControllerComponents) extends AbstractController(cc)with Logging
{
this: SecuredActionByToken =>
def index = CheckedToken{ ...
Wo SecuredActionByToken
trait
Klassennamen verwendet CheckTokenService
diesen Benutzer überprüfen kann ‚Index‘ laufen (wir versuchen, aus Art Kuchen Muster Guice zu bewegen).
Ist es möglich, CheckTokenService
zu SecuredActionByToken
zu injizieren? Natürlich könnte ich es auf HomeController
selbst injizieren und irgendwie damit arbeiten, aber ich möchte einige Dienste nicht wirklich an Controller weitergeben, wenn sie diese nicht direkt nutzen.
Sie können Konstruktor Injektion und Methode injizieren mischen Wenn Sie Guice verwenden, ist es schwieriger, Tests zu schreiben, wenn Sie Mocks erstellen oder Controller-Instanzen manuell erstellen. Also muss Ihr 'SecuredActionByToken' einen' @Inject def setCheckTokenService (cts: CheckTokenService) 'haben, der nach Instantiierung des Controllers aufgerufen wird. Sehen Sie ein Beispiel [hier] (https://github.com/playframework/playframework/blob/fe0fae19579f5d2e86860adcd2b73f15b20bbec2/framework/src/play/src/main/scala/play/api/mvc/Controller.scala#L170-L198). – marcospereira