java - 使用 guice 注入(inject)与 actor 抛出空指针

标签 java dependency-injection guice akka actor

我在作为 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/

相关文章:

java - 删除 JFreeChart 中的 x 轴日期值

java - Guice 相当于 Spring BeanPostProcessor

java - 我看到 "Re-entry is not allowed"是什么意思?

java - 如何修改正在运行的 Java 程序以涉及 SwingWorker(因为输出窗口闪烁并且看起来被黑了)

java - 用于拆分数字表达式的正则表达式

scala - 如何在 scala 中进行依赖注入(inject)?

design-patterns - 如何使用依赖注入(inject)和存储库处理工作单元

javascript - 揭示模块中的依赖注入(inject)

java - @Nullable 似乎不适用于 @AssistedInject

java - 抛出 SQLIntegrityConstraintViolationException 时如何查找列和表名称