我正在尝试在模块内使用带有 play 2.7.4 的 WS 客户端,但遇到了问题。我不想像这里描述的那样自己创建客户端,而是使用 guice 依赖注入它。这似乎不起作用,我的实例为空。如果我在模块外使用 WS 客户端,一切正常。
根据我在此处阅读的内容,此时模块内只有 Config 和 Environment 可用,还没有其他绑定。
有什么办法可以做到这一点?
[编辑 1]
我从这个答案中了解到的是创建一个像这样的提供程序类,我通常在其中注入它
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
}