我在作为 akka actor 启动的服务器的字段注入(inject)中遇到空指针异常。
附表部分:
private ActorRef myActor = Akka.system().actorOf(
new Props(Retreiver.class));
@Override
public void onStart(Application app) {
log.info("Starting schedular.....!");
Akka.system()
.scheduler()
.schedule(Duration.create(0, TimeUnit.MILLISECONDS),
Duration.create(30, TimeUnit.MINUTES), myActor, "tick",
Akka.system().dispatcher());
}
猎犬类部分:
public class Retreiver extends UntypedActor {
private Logger.ALogger log = Logger.of(Retreiver .class);
@Inject
private myDataService dataService;
@Override
public void onReceive(Object arg0) throws Exception {
if (0 != dataService.getDataCount()) {
....
....
....
}
我得到的数据服务为空。请就此向我提出建议。
谢谢。
最佳答案
对于任何需要这个的人:
public class GuiceInjectedActor implements IndirectActorProducer {
final Injector injector;
final Class<? extends Actor> actorClass;
public GuiceInjectedActor(Injector injector, Class<? extends Actor> actorClass) {
this.injector = injector;
this.actorClass = actorClass;
}
@Override
public Class<? extends Actor> actorClass() {
return actorClass;
}
@Override
public Actor produce() {
return injector.getInstance(actorClass);
}
和
Akka.system().actorOf(Props.create(GuiceInjectedActor.class, INJECTOR,Retreiver.class))
就是这样......!!!
关于java - 使用 guice 注入(inject)与 actor 抛出空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17612440/