我们在Java上使用play2.5。我有一个自定义类,即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
Declaring Bean
3)使用spring的autowire功能将bean wsclient注入A类