【发布时间】:2020-07-27 11:58:51
【问题描述】:
我正在尝试在模块内使用带有 play 2.7.4 的 WS 客户端,但遇到了问题。我宁愿不按照here 的描述自己创建客户端,而是使用 guice 依赖注入它。这似乎不起作用,我的实例为空。如果我在模块外使用 WS 客户端,一切正常。
根据我阅读here 的内容,此时模块内只有配置和环境可用,还没有其他绑定。
有什么方法可以实现吗?
[编辑 1]
我从this answer 了解到的是创建一个像这样的提供程序类,我通常在其中注入它
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
}
【问题讨论】:
-
你能发布模块的完整源代码吗?
-
@TimMoore 已添加,是否更清楚?
标签: playframework guice ws-client