首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Play 2.4.2提供null的JavaW

Play 2.4.2提供null的JavaW
EN

Stack Overflow用户
提问于 2017-01-06 15:03:28
回答 1查看 140关注 0票数 0

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

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

但问题是如果我这么做了

代码语言:javascript
复制
Logger.info(ws);

在我的控制器方法中,它在控制台中打印为空。我似乎找不到问题所在,因为如果是依赖问题,那么WsClient就不会被导入。

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-01-06 16:34:12

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

代码语言:javascript
复制
 requestStaticInjection(WSClient.class); 

但我建议直接从WSClient ws中删除static。

更好的做法是使用提供者注入。在这种情况下,只有在真正需要时才会实例化WSClient。注入:

代码语言:javascript
复制
@Inject
private Provider<WSClient> wsProvider; 

要创建WSClient:

代码语言:javascript
复制
WSRequest request = wsProvider.get().url("url");

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

你可以在这篇post中读到更多关于Play中注入的内容;尽管这篇文章提到了Play 2.5,但对于2.4,所有的想法都是相似的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41500625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档