LoginSignup
15
14

More than 5 years have passed since last update.

PlayでとりあえずonStartしたい

Last updated at Posted at 2016-04-04

はじめに

PlayのVersionを上げたらGlobalSettingsで怒られたけどonStartの代替のやり方が良く分からない!そんな人向けに中身の解説すっ飛ばして「とりあえず動くようにする」だけの記事。

コード

こいつをapp以下の好きなところにおいて

import javax.inject._
import com.google.inject.AbstractModule

@Singleton
class Global @Inject()(system: ActorSystem) {
  onStart()

  def onStart(): Unit = {
    // やりたいことを書こう!
  }
}

class GlobalModule extends AbstractModule {
  override def configure(): Unit = bind(classOf[Global]).asEagerSingleton()
}

application.conf に以下を書き足す

play.modules.enabled += "GlobalModule"

ActorSystem以外に欲しいものが

(system: ActorSystem) の部分が引数になっているので、欲しいものを追加すればよしなにやってくれる。多分。

結局これなんなの

Playって割とGlobalな値使ってるけど、それ良くないから依存性は後で注入することにしようぜ!そこでDIですよ!だからGlobalSettingsとかいうGlobalなobjectはやめようぜ!ってことらしい。DIを使うモチベはそんなとこ。

で、上は何をしているかというと、moduleを追加して、moduleを初期化するときにonStartを実行させるようなことをしてるだけ。簡単だね

15
14
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14