Play Framework:阻止引导线程onStart

时间:2014-11-17 15:53:59

标签: scala playframework bootstrapping

当您在Global中覆盖onStart时,它是否会阻止运行引导过程的线程? 换句话说,我想确保在从onStart返回调用之前Play不会启动。

如果不是这种情况,那么在Play开始接受请求之前需要执行的关键init进程有什么好的解决方案?

1 个答案:

答案 0 :(得分:2)

是的,Global.onStart将在第一次请求之前阻止。

Play中的GlobalSettings对象是一个插件。启动应用程序时,首先加载路由,然后通过调用每个插件的onStart方法连续加载插件。 GlobalSettings插件在此初始化中排在最后,它确保首先加载所有其他插件,以便所有数据库连接,缓存等都可用。

插件初始化具有来阻止单个线程以保证:

  1. 所有插件都按照所需的确切顺序进行初始化,以防止初始化顺序错误(如果一个插件首先依赖于另一个初始化 - 例如,数据库插件必须始终在evolutions插件之前初始化)。

  2. 在应用程序开始处理请求之前,所有插件都已初始化。 (否则,您将无法保证在第一次请求时DB插件已准备好。)