播放 2.4.2 JavaWs 给 null

Posted

技术标签:

【中文标题】播放 2.4.2 JavaWs 给 null【英文标题】:Play 2.4.2 JavaWs giving null 【发布时间】:2017-01-06 07:03:28 【问题描述】:

我正在尝试在 play 2.4 中使用 JavaWs,因为我已将 javaWs 添加到依赖项

然后将@Inject static WSClient ws; 添加到我的控制器中。

但问题是,如果我这样做了

Logger.info(ws);

在我的控制器方法中,它在控制台中打印 null。我似乎无法弄清楚这个问题,因为如果是依赖问题,那么WsClient 将不会被导入。

我有什么遗漏吗?

【问题讨论】:

【参考方案1】:

根据Guice documentation 不推荐使用静态注入,应该是特殊原因才使用。为了使用静态注入,您应该在模块中添加以下配置:

 requestStaticInjection(WSClient.class); 

但我建议只是从 WSClient ws 中删除静态。

使用 Provider 注入会更好。在这种情况下,WSClient 只有在真正需要时才会被实例化。注入:

@Inject
private Provider<WSClient> wsProvider; 

创建 WSClient:

WSRequest request = wsProvider.get().url("url");

此外,如果您打算对控制器进行单元测试,则直接注入 WSClient 可能会出现问题。

您可以在post 中阅读更多关于 Play 注入的信息;尽管帖子提到了 Play 2.5,但 2.4 的所有想法也是相似的。

【讨论】:

以上是关于播放 2.4.2 JavaWs 给 null的主要内容,如果未能解决你的问题,请参考以下文章

applicationMusicPlayer 播放状态为 NULL?

尝试播放音频,给我 null

Android 音视频深入 十四 FFmpeg与OpenSL ES 播放mp3音乐,能暂停(附源码

jq 自动播放音乐代码

播放 Ebean 列表 null

使用 MPMediaItems 播放歌曲时 MPMediaItemPropertyAssetURL 变为 null