7

私はScala Playアプリケーションを2.5に移行しています。現在、コンポーネントを依存関係注入に移行しています。私はそれを行う方法を失っているところに1つの場所が残っている。私はコンパニオンオブジェクトで定義されてPathBindable暗黙の型変換があります。Play Framework Dependency Injectionを使用したPathBindable

object Task { 
    implicit def pathBindable(implicit stringBinder: PathBindable[String]) = 
    new PathBindable[Task] { 
     ... 
    } 
} 

PathBindableの実装がリポジトリからオブジェクトをルックアップするために必要を、私はここにリポジトリを依存関係注入する方法を発見していません。回避策として、現在廃止予定のPlayオブジェクトを使用しています。

val tasks = Play.application(Play.current).injector.instanceOf[TasksRepository] 

これを正しく解決する方法はありますか?

答えて

0

これはオブジェクト内でこれにアクセスできる唯一の方法だと思います。

良いアイデアは、このような変圧器を作成することです。この

class NeedsTaskPathBinder @Inject() (service : SomeSerive) (implicit taskPathBinder : TaskPathBinder) { 

    ... 

} 

のようなサービスでそれを注入

class TaskPathBinder @Inject() (tasks : TaskRepository) extends PathBindable[Task]{ 
    // implementiation 
} 

と比べて、あなたのアイデアを得る願っています。

+1

フム、問題は、私はそこにそれを使用できるように、暗黙のニーズはルートに利用できるようにするということですplay.api.mvc.PathBindable –

関連する問題