Воспроизведение среды java, инициализирующей переменные при запуске приложения в

#java #playframework #playframework-2.0

#java #playframework #playframework-2.0

Вопрос:

Я хочу инициализировать некоторые переменные при запуске приложения в Play framework. Я следую этому документу 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:

Ваш Application контроллер используется в качестве реализации app параметра в вашем onStart(Applciation app) методе.

Другими словами, вы не переопределяете метод onStart() обратного вызова, который будет вызывать Play, вместо этого вы просто определяете свой собственный пользовательский метод.

Скорее всего, это должно быть так:

 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 аннотацию, это намекнуло бы на проблему, поэтому имейте в виду для дальнейшего использования.

Подробнее о глобальном здесь

Комментарии:

1. Можно ли завершить запуск приложения, если вы столкнулись с какой-либо ошибкой?

2. Вы могли бы просто бросить RuntimeExeption