一个模块内玩WS客户端

Play WS client within a module

我正在尝试在模块内使用 WS 客户端和 play 2.7.4,但我 运行 遇到了问题。我宁愿不按照 here 中的描述自己创建客户端,而是使用 guice 进行依赖注入。这似乎不起作用,我的实例为空。如果我在模块外使用 WS 客户端,一切正常。

根据我的阅读,here此时模块中只有配置和环境可用,还没有绑定任何其他内容。

有什么办法可以实现吗?


[编辑 1]

我从 中了解到的是创建一个像这样的提供程序 class 我通常注入它的地方

public class WSClientProvider implements Provider<WSClient> {

WSClient wsClient;

@Inject
public WSClientProvider(WSClient wsClient) {
    this.wsClient = wsClient;
}

@Override
public WSClient get() {
    return wsClient;
}

}

然后在模块内部像这样绑定它

bind(WSClient.class).toProvider(WSClientProvider.class);

但这对我来说不起作用。我在这里错过了什么?


[编辑 2]

这是我目前的模块

public class SecurityModule extends AbstractModule {

private final Environment environment;
private final Config configuration;

public SecurityModule(final Environment environment, final Config configuration) {
    this.environment = environment;
    this.configuration = configuration;
}

@Override
protected void configure() {
    ...some bindings...
}

@Provides
private ObjectA provideMyObjectA() {
    return new ObjectA(); <-- we want to inject the WSClient inside this object

}

我想你可能需要更进一步

public class ObjectAProvider implement Provider<ObjectA> {
     @Inject
     WSClient wsClient;

     public ObjectA get() {
          return new ObjectA(wsClient);
     }
}

或者您必须在提供程序方法中手动注入:

ObjectA objectA = injector.getInstance(ObjectA.class);
return objectA;

创建注入器后。