2016-08-24 2 views
0

本当に基本的なものがないかどうかは分かりませんが、WSClientの使い方を理解できません。 WSClientをクラスに依存関係として渡す必要があると言ったすべての例を見てきましたが、プログラムを実行すると実際にクラスに渡すものは何ですか?例えばWSClientをscalaアプリケーションで使用する(フレームワークを再生する)

、私のクラスのシグネチャは次のとおりです。

class myClassName(ws: WSClient) 

しかし、私はクラスをインスタンス化するとき、私は実際にそれに何を渡すのですか? Playを無視しても大丈夫です!それがより簡単になり、それを実行するためにSBTを使用すれば(これは私がもっと慣れ親しんでいる)フレームワークのものです。

答えて

2

ここではWSClientを使用している可能性がありますが、Playフレームワークにクライアントのインスタンスを「管理」させることをお勧めします。あなたがあなたのアプリケーションをインスタンス化するとき、それが注入されます:それが何を意味するのか

class Application @Inject() (ws: WSClient) extends Controller { 
    ... 
} 

...の内側には、値としてwsへのアクセス権を持っているということです。あなたはそれを使用してmyClassNameをインスタンス化することができます

class Application @Inject() (ws: WSClient) extends Controller { 
    val myclass = myClassName(ws) // passes the injected WSClient to myClassName 
} 

それともWSClientを返す関数を書くことができますので、あなたのコードのいくつかの他の領域は、そのためのオブジェクトハンドラを得るためにあなたのApplicationオブジェクトに呼び出すことができます。

しかし、の注入@Inject注釈)のためにApplicationオブジェクトがそのハンドルを取得することが重要です。

WSClientを生成して手動で管理する必要がある場合は、good instructions hereがあります。推奨される実装はPlayに依存しています。フレームワークライブラリであるが、Applicationに依存しない。

+0

このアプリケーションをどのように実行しますか?私はIntellijを使用しています – annedroiid

+0

私の目的は、Intellijを使用して実行して実行するだけの場所を持っているので、アプリケーションのすべてを必要としません。これはメインアプリケーションのサイドクラスに過ぎません。 – annedroiid

+0

SBTを使用してアプリケーションをコンパイルして実行していますか? SBTにはIntelliJ用のプラグインがあり、アプリケーションの起動に使用できます。私はもっ​​とたくさんのことを知らずに多くの指導をすることはできません。 –

関連する問題