1
當您在Global中覆蓋onStart時,它會阻塞運行啓動進程的線程嗎? 換句話說,我想確保Play在onStart返回之前不會啓動。Play Framework:阻止啓動線程onStart
如果情況並非如此,那麼在Play開始接受請求之前需要進行的關鍵init過程有什麼好的解決方案?
當您在Global中覆蓋onStart時,它會阻塞運行啓動進程的線程嗎? 換句話說,我想確保Play在onStart返回之前不會啓動。Play Framework:阻止啓動線程onStart
如果情況並非如此,那麼在Play開始接受請求之前需要進行的關鍵init過程有什麼好的解決方案?
是的,Global.onStart
會在第一個請求之前阻塞。
Play中的GlobalSettings
對象是一個插件。當應用程序啓動時,首先加載路由,然後通過調用各自的onStart
方法連續加載插件。 GlobalSettings
插件在這個初始化中最後一個,它確保所有其他插件都被首先加載,以便您的所有數據庫連接,緩存等都可用。
插件初始化有阻止單個線程保證:
所有的插件都在期望防止初始化順序錯誤的確切順序初始化(如果一個插件依賴於另一個初始化首先 - 例如數據庫插件必須始終在evolutions插件之前初始化)。
所有插件在之前初始化應用程序可以開始處理請求。 (否則,例如,您將無法保證數據庫插件已準備好在第一個請求上)。