再生2.4.xから2.5.5を再生するようにアップグレード中です。私たちはそうのように、オブジェクトされているコントローラの かなり大量に持っている:オブジェクトを使用するSomeControllerがPlayフレームワーク2.5のコントローラを拡張する
object TranslationsController extends Controller { ... }
しかし、2.5に切り替えているので、私たちは今、この (それはかなり巨大プロジェクトだ)のようなエラーの数百を取得:
type TranslationsController is not a member of package controllers
私たちのコントローラのいくつか/ほとんどがオブジェクトであり、 はクラスではありません。私はこれが依存性注入と関係があることを理解しています。 しかし、コントローラのかなり大きなパーセンテージであるは、に依存しません。もちろん
、我々はそれをコンパイルするためにそのようにそれを書き換えることができます:
class TranslationsController @Inject() extends Controller { ... }
が、それは本当に無意味です? パラメータ、を取らない不変クラス/オブジェクトは、をオブジェクトにする必要があります。それはcase class None()
とcase object None
のようなものです。もちろん、後者はすべての場合において好ましいものでなければならない。
ここで大したことは、これらの コントローラがオブジェクトであることを前提とするテスト(〜1000件)が多かったので、オブジェクト - >クラス のいずれかを置き換えることができないということです。クラスで動作させるには、最初にval controller = new TranslationsController
を実行するために、すべてのテストを書き直す を最初に書き直す必要があります。これは多くの作業(およびトン数 の定型文)です。
まだオブジェクトを使用する方法があれば、本当に感謝します。 ファイルに.routes
ファイルのいくつかの構文がありますか、または簡単な 回避策がありますか?つまり、一度コントローラに依存すると、 クラスになりますが、 のメリットがなくても、1つのコントローラで100コントローラにするのはかなり面倒です。