我想在Play框架中初始化应用程序启动时的一些变量。我跟着这份文件http://www.playframework.com/documentation/2.2.x/JavaGlobal做了同样的事情。 然而,当我运行应用程序时,我得到命令" play run"初始化不会发生。我在这里做错了吗?
import com.Constants;
import controllers.Application;
import controllers.Utils;
import play.*;
public class Global extends GlobalSettings {
public void onStart(Application app) throws Exception {
Logger.info("Application has started");
Constants.data1= Utils.getMerchantToBrMapping(Utils.getMerchantName());
Constants.data2 = Utils.getBrToMerchantMapping(Utils.getMerchantName());
Logger.info("Loaded the Merchant To BR Map");
}
}
答案 0 :(得分:1)
您的Application
控制器正在用作app
方法中onStart(Applciation app)
参数的实现。
换句话说,你没有覆盖Play将调用的onStart()
回调方法,而只是定义自己的自定义方法。
它应该是这样的:
import play.Application;
import play.GlobalSettings;
import play.Logger;
import controllers.Utils;
import com.Constants;
public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
Logger.info("Application has started");
Constants.data1 = Utils.getMerchantToBrMapping(Utils.getMerchantName());
Constants.data2 = Utils.getBrToMerchantMapping(Utils.getMerchantName());
Logger.info("Loaded the Merchant To BR Map");
}
}
请注意导入import play.Application;
而不是您的控制器。另请注意,onStart()
不会抛出异常。如果您添加了@Override
注释,则会暗示问题,因此请记住以备将来参考。
有关全球here
的更多信息