Подтвердить что ты не робот

Как запустить код при запуске в Play! структура 2.4

Я пытаюсь напечатать "Hello" для консоли при запуске приложения. Можете ли вы объяснить, как это сделать?

Что я пробовал сам:

app/modules/HelloModule.scala:

package modules

import com.google.inject.AbstractModule

trait Hello {}

class MyHelloClass extends Hello {
  initialize() // running initialization in constructor
  def initialize() = {
    println("Hello")
  }
}

class HelloModule extends AbstractModule {
  def configure() = {
    bind(classOf[Hello])
      .to(classOf[MyHelloClass]).asEagerSingleton
  }
}

в conf/application.conf я добавил:

play.modules.enabled += "modules.HelloModule"

и "Hello" не печатаются, когда я запускаю activator run

4b9b3361

Ответ 1

Вам нужно использовать Глобальный объект и переопределить метод onStart:

Определение глобального объекта в вашем проекте позволяет обрабатывать глобальные настройки для вашего приложения. Этот объект должен быть определен в по умолчанию (пустой) и должен распространять GlobalSettings.

import play.api._

object Global extends GlobalSettings {

  override def onStart(app: Application) {
    Logger.info("Application has started")
  }

  override def onStop(app: Application) {
    Logger.info("Application shutdown...")
  }

}

Вы также можете указать собственное имя класса реализации GlobalSettings используя ключ конфигурации application.global.

Update:

Правильный способ - использовать Injection Dependency, точно так же, как описано в вопросе. Глобальные настройки могут быть удалены позже

В этом вопросе нет проблем с кодом. Я проверил его на моей локальной установке. Код записывает "Hello" после первого запроса в режиме разработки "запуск активатора" и после запуска приложения в рабочем режиме "запуск активатора".

Btw, попробуйте использовать более легкую для поиска строку в журнале, например

"-------- APP DZIABLO НАЧИНАЕТСЯ --------"

Это может быть так, что вы просто пропустили "Hello" в журнале (я не узнал его с самого начала)

введите описание изображения здесь