当您在Global中覆盖onStart时,它是否会阻止运行引导过程的线程? 换句话说,我想确保在从onStart返回调用之前Play不会启动。
如果不是这种情况,那么在Play开始接受请求之前需要执行的关键init进程有什么好的解决方案?
答案 0 :(得分:2)
是的,Global.onStart
将在第一次请求之前阻止。
Play中的GlobalSettings
对象是一个插件。启动应用程序时,首先加载路由,然后通过调用每个插件的onStart
方法连续加载插件。 GlobalSettings
插件在此初始化中排在最后,它确保首先加载所有其他插件,以便所有数据库连接,缓存等都可用。
插件初始化具有来阻止单个线程以保证:
所有插件都按照所需的确切顺序进行初始化,以防止初始化顺序错误(如果一个插件首先依赖于另一个初始化 - 例如,数据库插件必须始终在evolutions插件之前初始化)。
在应用程序开始处理请求之前,所有插件都已初始化。 (否则,您将无法保证在第一次请求时DB插件已准备好。)