播放java框架在应用程序启动时初始化变量

时间:2014-06-26 06:09:49

标签: java playframework playframework-2.0

我想在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");
  }
}

1 个答案:

答案 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

的更多信息