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

Java 需要通过play-2.5中的DI在自定义类中创建单个WSClient对象作为该自定义类的属性。,java,Java,我们将play2.5与java一起使用。我有一个自定义类,即类a,在其中我通过DI注入了一个WSClient对象作为自定义类a的属性。我们创建这个自定义类A的多个实例,因此对于自定义类A的每个新实例,我们都会得到一个WSClient的新实例。我们的要求是,在自定义类A的多个实例中,应该只有一个WSClient实例。因此,我在WSClient属性上方使用了javax.inject的@Singleton注释。但它不创建单例实例,每次我安装自定义类a时,它都会创建一个新的WSClient实例。有人能建

我们将play2.5与java一起使用。我有一个自定义类,即类a,在其中我通过DI注入了一个WSClient对象作为自定义类a的属性。我们创建这个自定义类A的多个实例,因此对于自定义类A的每个新实例,我们都会得到一个WSClient的新实例。我们的要求是,在自定义类A的多个实例中,应该只有一个WSClient实例。因此,我在WSClient属性上方使用了javax.inject的@Singleton注释。但它不创建单例实例,每次我安装自定义类a时,它都会创建一个新的WSClient实例。有人能建议在自定义类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) 使用Spring框架

2) 将wsclient声明为具有默认单例作用域的bean

3) 使用spring的功能将bean wsclient注入类A(使用spring框架

2) 将wsclient声明为具有默认单例作用域的bean


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

您可以在该类外部创建wsclient单例,并在该类内部使用它。类似于具有autowire功能的spring框架单例bean。您可以在此类外部创建wsclient单例,并在该类内部使用它。与具有autowire功能的spring框架singleton bean类似。ConcepteQuest,谢谢您的回答,我已经尝试过了,但它不起作用。您的意思是它创建了wsclient的多个实例吗?您需要将wsclient作为构造函数参数发送到类A。稍后将尝试添加一些示例。ConferenceQuest,谢谢您的回答,我已经尝试过了,但它不起作用。您的意思是它会创建wsclient的多个实例吗?您需要将wsclient作为构造函数参数发送到类A。稍后将尝试添加一些示例。