是否从Play框架中删除了异步作业? 什么是更好的选择?
我想使用Job
所以我可以在应用程序启动时启动它。 现在它似乎已完全从Play中删除了?
我看到一些人们创建Global
类的示例,但不完全确定是否应该使用它来替换Job
。
有什么建议么?
编辑:如果你要投票,给出一个理由。 也许我在问题中遗漏了一些东西,也许这不属于这里。 至少有些东西……
在Play 2.0中删除了Job类。
您有一些替代方案,但取决于您的Play版本以及是否需要异步:
Akka演员
对于自Play 2.0以来的所有版本,您可以使用Akka Actors计划一次异步任务/ actor,并通过Play Global
类在启动时执行它。
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() ); } }
有关详细信息,请参阅https://www.playframework.com/documentation/2.3.x/JavaAkka 。
渴望单身人士
从Play 2.4开始,你可以热切地将单身人士与Guice绑定在一起
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(); } }
StartupConfigurationImpl
将在默认构造函数中完成它的工作。
@Singleton public class StartupConfigurationImpl implements StartupConfiguration { @Inject private Logger log; public StartupConfigurationImpl() { init(); } public void init(){ log.info("init"); } }
请参阅https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection#Eager-bindings