是否从Play框架中删除了异步作业?什么是更好的选择?

时间:2015-06-23 15:46:00

标签: java playframework playframework-2.3

我想使用Job所以我可以在应用程序启动时启动它们。现在它似乎已完全从Play中删除了?

我看到了一些人们创建Global类的示例,但不完全确定是否应该使用它来替换{​​{1}}。

有什么建议吗?

编辑:如果你要投票,请说明理由。也许我在问题中遗漏了一些东西,也许这并不属于这里。至少是......

1 个答案:

答案 0 :(得分:7)

在Play 2.0中删除了Job类。

根据您的Play版本以及是否需要异步,您有一些选择:

Akka Actors

对于自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