我试图在播放2.4中使用JavaW,因为我已将javaW添加到依赖项中

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

但是问题是如果我这样做

Logger.info(ws);


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

我有什么想念的吗?

最佳答案

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

 requestStaticInjection(WSClient.class);


但是相反,我建议仅从WSClient ws中删除静态对象。

最好改用提供者注入。在这种情况下,仅在真正需要时才实例化WSClient。注入:

@Inject
private Provider<WSClient> wsProvider;


要创建WSClient:

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


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

您可以在此post中阅读有关Play注入的更多信息;尽管该文章引用的是Play 2.5,但所有想法在2.4中也是如此。

关于java - Play 2.4.2 JavaW赋予null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41500625/

10-10 16:02