Service 在播放应用程序中启动时调用服务
我有一个Play 2.4应用程序。尝试在应用程序启动时启动每周任务。当前的建议是在急切注入类(Guice)的构造函数中这样做。但是,我的任务需要访问服务。如何将该服务注入到任务中而不出现错误:Service 在播放应用程序中启动时调用服务,service,playframework,dependency-injection,guice,Service,Playframework,Dependency Injection,Guice,我有一个Play 2.4应用程序。尝试在应用程序启动时启动每周任务。当前的建议是在急切注入类(Guice)的构造函数中这样做。但是,我的任务需要访问服务。如何将该服务注入到任务中而不出现错误: Error injecting constructor, java.lang.RuntimeException: There is no started application ?您需要在ApplicationStart类中使用构造函数注入,并提供一个ApplicationModule来绑定它 在app
Error injecting constructor, java.lang.RuntimeException: There is no started application
?您需要在ApplicationStart类中使用构造函数注入,并提供一个ApplicationModule来绑定它 在application.conf中:
play.modules.enabled += "yourPath.AppModule"
在AppModule类中:
public class AppModule extends AbstractModule {
@Override
protected void configure() {
Logger.info("Binding application start");
bind(ApplicationStart.class).asEagerSingleton();
Logger.info("Binding application stop");
bind(ApplicationStop.class).asEagerSingleton();
}
}
在ApplicationStart类中:
@Singleton
public class ApplicationStart {
@Inject
public ApplicationStart(Environment environment, YourInjectedService yourInjectedService) {
Logger.info("Application has started");
if (environment.isTest()) {
// your code
}
else if(
// your code
}
// you can use yourInjectedService here
}
}
万一你需要它;应用程序顶部:
@Singleton
public class ApplicationStop {
@Inject
public ApplicationStop(ApplicationLifecycle lifecycle) {
lifecycle.addStopHook(() -> {
Logger.info("Application shutdown...");
return F.Promise.pure(null);
});
}
}
你是说Play 2.4吗?你有一些源代码吗?实际上我在我的应用程序中使用了它,我刚刚删除了具体的实现细节。它很管用,你可以试试看。