使用Play框架v2.4.3,根据https://www.playframework.com/documentation/2.4.x/JavaGlobal#Intercepting-application-start-up-and-shutdown中的文档,我在根名称空间中具有以下Global.java
:
import play.*;
public class Global extends GlobalSettings {
public void onStart(Application app) {
Logger.info("Application has started");
}
public void onStop(Application app) {
Logger.info("Application shutdown...");
}
}
但是,在生产环境或测试环境中启动应用程序时,日志显示
应用程序已启动
应用程序已启动
为什么此回调被调用两次?
答案 0 :(得分:0)
在通过play.api.Play.scala#start
进行调试之后,似乎Global
插件被注册了两次。在play.api.Plugins.scala#loadPluginClassNames
中放置一个断点表明在类路径上有两个名为play.plugins
的资源文件-由于依赖项不匹配,导致播放2.4.3和2.4.6都被拉入。 >
通过更正依赖版本或过滤出不正确的Play依赖JAR,以便在类路径上只有单个Play JAR,只有单个play.plugins
文件仅注册单个Global
插件-因此只调用一次Global.onStart
。