这个程序有什么问题吗?
我是在2.4.3版的play框架中调用web服务时获得nullPointerException的。
package com.enkindle.box;
import javax.inject.Inject;
import play.libs.ws.WSClient;
/**
* @author thirumal
*
*/
public class Sample {
@Inject WSClient ws;
public static void main(String[] args) {
Sample sample = new Sample();
sample.callAPI();
}
public void callAPI() {
ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
}
}发布于 2015-10-01 20:31:56
问题是您的Sample类在依赖注入的上下文中不可用--我假设Guice。有几种方法可以解决这个问题,但最简单的方法是使用Guice创建一个Sample接口并绑定它的实现SampleImpl,这样它就可以用于注入的依赖项。我将假设这是从控制器中派生出来的,因此您可以将Sample注入到控制器中,然后从那里命中callApi()方法。
主计长:
public class SampleController extends Controller {
@Inject Sample sample;
public Promise<Result> apiCall() {
sample.callApi();
return promise(() -> ok());
}
}接口:
@ImplementedBy(SampleImpl.class)
public interface Sample {
public void callApi();
}以及接口实现:
public class SampleImpl implements Sample {
@Inject WSClient ws;
@Override
public void callApi() {
// ws should not be null
ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
}
}参考文档:https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection#Binding-annotations
https://stackoverflow.com/questions/32880830
复制相似问题