我想使用Job
所以我可以在应用程序启动时启动它们。现在它似乎已完全从Play中删除了?
我看到了一些人们创建Global
类的示例,但不完全确定是否应该使用它来替换{{1}}。
有什么建议吗?
编辑:如果你要投票,请说明理由。也许我在问题中遗漏了一些东西,也许这并不属于这里。至少是......
答案 0 :(得分:7)
在Play 2.0中删除了Job类。
根据您的Play版本以及是否需要异步,您有一些选择:
对于自Play 2.0以来的所有版本,您可以使用Akka Actors安排一次异步任务/ actor,并通过Play public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
Akka.system().scheduler().scheduleOnce(
Duration.create(10, TimeUnit.MILLISECONDS),
new Runnable() {
public void run() {
// Do startup stuff here
initializationTask();
}
},
Akka.system().dispatcher()
);
}
}
类在启动时执行它。
import com.google.inject.AbstractModule;
import com.google.inject.name.Names;
public class StartupConfigurationModule extends AbstractModule {
protected void configure() {
bind(StartupConfiguration.class)
.to(StartupConfigurationImpl.class)
.asEagerSingleton();
}
}
有关详细信息,请参阅https://www.playframework.com/documentation/2.3.x/JavaAkka。
从Play 2.4开始,你可以急切地将单身人士与Guice绑定
StartupConfigurationImpl
@Singleton
public class StartupConfigurationImpl implements StartupConfiguration {
@Inject
private Logger log;
public StartupConfigurationImpl() {
init();
}
public void init(){
log.info("init");
}
}
可以在默认构造函数中完成它。
{{1}}
请参阅https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection#Eager-bindings