在actor中注入控制器

时间:2015-12-01 10:29:35

标签: playframework playframework-2.0 playframework-2.4

是否可以在UntypedActor中注入控制器类? 连接到控制器类的最佳方法是什么?

package actors;

import akka.actor.UntypedActor;
import dispatchers.PushNotificationDispatcher;
import play.Logger;

import javax.inject.Inject;
import java.util.List;

public class PushNotificationActor extends UntypedActor {

    @Inject
    PushNotificationDispatcher dispatcher;

    @Override
    public void onReceive(Object message) throws Exception {
        Logger.debug("PushNotificationActor started");
        dispatcher.createAndSendReminderPushNotification();
        Logger.debug("PushNotificationActor finished");
    }

}

2 个答案:

答案 0 :(得分:0)

我认为像你写的那样做不可能......演员是封装的类。最好的选择是检查此代码是否有效但IMO不会......

您可以尝试通过以下参数传递此注入:

Props props2 = Props.create(MyActor.class, your params);

答案 1 :(得分:0)

是的,可以将实例注入您的Actor。

使用Play 2.4 ,它可以正常运行out of the box,就像在正常课程中一样注入。

我总是注入构造函数,例如JPAApi:

public class MyActor extends UntypedActor {

  private final JPAApi jpa;

  @Inject
  public MyActor(JPAApi jpa) {
    this.jpa = jpa;
  }

  @Override
  public void onReceive(Object msg) throws Exception {
    ...
  }
}