2017-04-03 5 views
1

私たちはjavaでplay2.5を使用しています。私はカスタムクラス、すなわちクラスAを持っています。このクラスでは、DIクラスを通してカスタムクラスAのプロパティとしてWSClientオブジェクトを注入しています。このカスタムクラスAの複数のインスタンスを作成するので、カスタムクラスAの新しいインスタンスごとにWSClientの新しいインスタンスが作成されます。我々の要件は、カスタムクラスAの複数のインスタンスの中にWSClientのインスタンスが1つだけあることです。そのため、WSClientのプロパティの上にjavax.injectという@ Singletonアノテーションを使用しました。しかし、それはシングルトンのインスタンスを作成しません、私はいつでも私はカスタムクラスAをinstathiateするたびにWSClientの新しいインスタンスを作成します。私のカスタムクラスAでWSClientの単一のインスタンスを作成するいくつかのゾルを提案することができますか?カスタムクラスの単一のWSClientオブジェクトをplay-2.5のDIを通じてそのカスタムクラスのプロパティとして作成する必要があります。

class A { 

private final WSRequest holder; 

@Singleton 
public WSClient wsClient = Play.current().injector().instanceOf(WSClient.class); 

A(String url) { 
    holder = wsClient.url(url); 
    } 
} 
+0

このクラス以外でwsclientシングルトンを作成し、それを使用することができますこのクラスの中で。 autowire機能を持つSpringフレームワークシングルトンBeanに似ています。 – notionquest

答えて

0

1)を使用してSpringフレームワーク

2)デフォルトのシングルトンスコープ

Declaring Bean

3)にスプリングのautowire能力を使用してBeanとしてwsclientを宣言: は、以下のコードでありますクラスwsclientをクラスAに挿入してください

+0

notionquest、答えてくれてありがとう、私はこれを試しましたが、うまくいきません。 –

+0

wsclientのインスタンスが複数作成されていることを意味していますか? wsclientをコンストラクター引数としてクラスAに送信する必要があります。しばらくの間サンプルを追加しようとします。 – notionquest

関連する問題