/ / Was ist der Unterschied zwischen abhängigen injizierten Routern und statischen Routern in ScalaRouting von Play Framework? - Scala, Spielrahmen

Was ist der Unterschied zwischen Abhängigkeit injiziert Router und statischen Router in ScalaRouting von Play Framework? - Scala, Spielrahmen

Was ist der Unterschied zwischen dem abhängigen Router und dem statischen Router in ScalaRouting von Play Framework?

Die Dokumentation des Play-Frameworks leitet die Abhängigkeit des injizierten Routers ein, wenn eine neue Play-Anwendung mithilfe der Play Seed-Aktivierungsvorlagen erstellt wird.

Aber ich bin immer noch verwirrt über beide Router.

Wenn jemand weiß, lehre mich bitte.

Antworten:

3 für die Antwort № 1

In einer Nussschale

Der dynamische Router gibt mehr KontrolleController-Instantiierung. Damit können Sie Abhängigkeiten mithilfe eines Abhängigkeitsinjektions-Frameworks verwalten und Controller-Tests werden erheblich vereinfacht. Der statische Router kann für das Prototyping bevorzugt werden, da er standardmäßig eingerichtet wird. Er ist auch eine offensichtliche Wahl für die Assets, da sie auch statisch sind.

Erweiterte Antwort

Es begann alles mit dem statischen Router. In Spiel 2.0 Sie können einen Controller nur als Klasse mit statischen Methoden (in Java) oder als Objekt (in Scala) erstellen. Es wurde im Hinblick darauf konzipiert, dass in MVC-Steuerungen zustandslos sind und daher Sie brauchen nicht mehrere Instanzen dieser Klasse. Das Problem bei statischen Methoden und Objekten bestand jedoch darin, dass sie nur schwer zu testen sind, insbesondere wenn es um Spott- oder Stubbing-Abhängigkeiten ging.

Dank positiver Kritik Mit Play 2.1 wurde ein neuer Mechanismus eingeführt um dieses Problem zu lösen, das die dynamische Objektinstanziierung erlaubte. Ab diesem Punkt können Sie durch Platzieren zwischen beiden Routenmethoden wählen @ vor einem Klassennamen in der Routes-Datei.

Vor 2.4 wurde die dynamische Erstellung mit a durchgeführt getControllerInstance() Methode in einem sogenannten globalen Objekt, aber Dieser Mechanismus wurde in 2.4 entfernt und durch einen komplexeren Ansatz der Abhängigkeitseinspritzung ersetzt.

Der statische Router ist meist sehr einfach gehaltenAnwendungsfälle und wegen der Abwärtskompatibilität noch, für neuere Projekte würde ich vorschlagen, mit dem dynamischen Router zu gehen, da er frei von Nachteilen seines Vorgängers ist.