2016-05-18 21 views
0

私はScalaとPlayFrameworkを初めて使い、どのように依存関係注入を行うことができるかを見極めようとしています。私は基本的に、特性になり、コントローラにそれを注入するファイルが必要です。私の問題は、その後、私は私のコントローラを見ていませんが、私のコントローラPlayFramework Scala依存関係注入Javax

import java.nio.file.{Files, Paths} 

import traitss.ProfileTrait_ 
import play.api.mvc.{Action, Controller} 
import javax.inject._ 

class Profiles @Inject() (profileTrait: ProfileTrait) extends Controller 
{ 

} 

にそのを注入しようと、これは私のコードである

ProfileTrait

私のコントローラクラスは、私の形質を見ていないことを
package traitss 

import play.api.mvc._ 


trait ProfileTrait extends Controller { 
    def Addone() 
    } 

ですそれは、私がここの例に従おうとしていますhttps://www.playframework.com/documentation/2.5.x/ScalaDependencyInjection。 私はプレイフレームワークバージョン2.50を使用しています

+0

私はアンダースコアをオフにしましたが、同じ問題が引き続き発生します。 – user1591668

+0

まず、コントローラーをコントローラーに挿入しないでください。共通のサービスを使用している場合は、各コントローラーに独立して注入する必要があります。 –

答えて

0

あなたは形質を注入することはできません、その形質を実装するオブジェクトを注入する必要があります。

依存性注入を機能させるには、注入する依存性をどのように解決するかをフレームワークに伝える必要があります(playではGuiceを使用します)。 これを行う方法はたくさんありますが、詳細についてはGuice's documentationをご覧ください。appディレクトリにModule.scalaディレクトリを作成しておきましょう。

...にあなたが注入したいオブジェクトを作成するためのロジックを置く
import com.google.inject.AbstractModule 
class Module extends AbstractModule { 
    override def configure() = { 
    bind(classOf[ProfileTrait]).toInstance(...) 
    } 
} 

関連する問題