需要在play-2.5中通过DI在自定义类中创建单个WSClient对象作为该自定义类的属性。

时间:2017-04-03 13:03:10

标签: java

我们正在使用play2.5和java。我有一个自定义类,即A类,我在其中注入了一个WSClient对象作为自定义类A到DI的属性。我们创建了这个自定义类A的多个实例,因此对于自定义类A的每个新实例,我们都会得到一个新的WSClient实例。我们的要求是在自定义类A的多个实例中应该只有单个WSClient实例。所以我在WSClient的属性之上使用了javax.inject的@Singleton注释。但它不会创建单例实例,每当我实例化自定义类A时,它每次都会创建一个新的WSClient实例。任何人都可以建议使用一些sol来在我的自定义类A中创建WSClient的单个实例吗? 以下是代码段:

class A {

private final WSRequest holder;

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

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

1 个答案:

答案 0 :(得分:0)

1)使用Spring框架

2)将wsclient声明为具有默认单例范围的bean

Declaring Bean

3)使用spring的autowire功能将bean wsclient注入到A类