2017-02-01 3 views
2

Ich konnte nicht viel Informationen über Play Runtime Dependency Injection versus Compile Time Dependency Injection in Scala finden. Die Kompilierungszeit DI wirkt ansprechender, aber Play scheint das Gegenteil zu fördern. Außerdem ist die Menge des benötigten Vorlageblocks in Kombination mit dem Mangel an Dokumentation entmutigend.Play Runtime DI Nachteile

Meine Frage ist, was genau sind die Nachteile der Verwendung von Runtime-DI in Play? Sind nicht alle Komponenten sofort verdrahtet, wenn die Anwendung geladen wird, wodurch Fehler schnell erkannt werden?

+1

Die beiden Abschnitte auf der Website sind ziemlich ausführlich - https://playframework.com/documentation/2.5.x/ScalaDependencyInjection und https://playframework.com/documentation/2.5.x/ScalaCompileTimeDependencyInjection –

Antwort

1

Der Hauptunterschied besteht darin, dass Fehler in der Verdrahtung zur Laufzeit gegenüber der Kompilierzeit in den jeweiligen Lösungen aufgedeckt werden. Wenn Sie also vergessen, eine Schnittstelle mit einer Runtime-DI an eine Implementierung zu binden, werden Sie (möglicherweise) feststellen, wenn Sie Ihre Anwendung bereitstellen. Sie haben dieses potentielle Problem mit Kompilierungs-DI auf Kosten der Ausführlichkeit gespeichert.

Ich würde empfehlen, einen Blick auf macwire werfen, die ein schönes Makro-Projekt für die Kompilierung-DI ist, die einige der Probleme mit Boilerplate erleichtert.

Es gibt ein Beispielspielprojekt mit Macwire auf .

+0

Ist Laufzeit beim Abspielen Startet oder kann es später sein, nur wenn die Komponente angefordert wird? – nmat