Playframework 将配置和服务注入参与者

Playframework 将配置和服务注入参与者,playframework,playframework-2.0,actor,Playframework,Playframework 2.0,Actor,根据on Play的网站,我的演员配置如下: public class SuggestionActor extends UntypedActor { public static Props props = Props.create(SuggestionActor.class); private DAOService service; private Configuration config; @Inject public SuggestionAct

根据on Play的网站,我的演员配置如下:

public class SuggestionActor extends UntypedActor {


    public static Props props = Props.create(SuggestionActor.class);

    private DAOService service;
    private Configuration config;

    @Inject
    public SuggestionActor(DAOService service, Configuration config) {
        this.service = service;
        this.config = config;
    }


    @Override
    public void onReceive(Object msg) throws Exception {
        if(msg instanceof SayHello) {
            // check if msg comes
            Logger.info(((SayHello) msg).name + config.getString("dao.mode"));
        }
    }
}
-

MyModule(在application.conf中启用)

我的控制器

@Singleton
public class SuggestionController extends Controller {

    private static Logger.ALogger LOGGER = Logger.of(SuggestionController.class);

    @Inject @Named("suggestion-actor")
    private ActorRef suggestionActor;

    public Result suggest(String message) {
         ask(suggestionActor, new SayHello(message), 10000);
    }
}
如果我试图通过SuggestionActor中的构造函数注入注入我的DAO对象和配置,Play会抛出 原因:java.lang.IllegalArgumentException:在参数[]的类actors.SuggestionActor上找不到匹配的构造函数


想法

我试图使用Guice将组件注入到SuggestionActor中,同时使用道具(在我的控制器中)。一旦我移除道具,一切都开始正常工作。注意,如果您想使用道具,请遵循以下步骤

public class MyModule extends AbstractModule implements AkkaGuiceSupport {

    @Override
    protected void configure() {
        bindActor(SuggestionActor.class, "suggestion-actor");
    }
}
@Singleton
public class SuggestionController extends Controller {

    private static Logger.ALogger LOGGER = Logger.of(SuggestionController.class);

    @Inject @Named("suggestion-actor")
    private ActorRef suggestionActor;

    public Result suggest(String message) {
         ask(suggestionActor, new SayHello(message), 10000);
    }
}