我正在尝试使用play 2.4中的JavaWs,因为我已经将javaWs添加到依赖项中
然后将@Inject static WSClient ws;添加到我的控制器中。
但问题是如果我这么做了
Logger.info(ws);在我的控制器方法中,它在控制台中打印为空。我似乎找不到问题所在,因为如果是依赖问题,那么WsClient就不会被导入。
我是不是遗漏了什么?
发布于 2017-01-06 16:34:12
根据Guice documentation,不推荐使用静态注入,这应该是使用它的特殊原因。为了使用静态注入,您应该向模块添加以下配置:
requestStaticInjection(WSClient.class); 但我建议直接从WSClient ws中删除static。
更好的做法是使用提供者注入。在这种情况下,只有在真正需要时才会实例化WSClient。注入:
@Inject
private Provider<WSClient> wsProvider; 要创建WSClient:
WSRequest request = wsProvider.get().url("url");此外,如果您打算对控制器进行单元测试,那么直接注入WSClient可能会有问题。
你可以在这篇post中读到更多关于Play中注入的内容;尽管这篇文章提到了Play 2.5,但对于2.4,所有的想法都是相似的。
https://stackoverflow.com/questions/41500625
复制相似问题