Play Framework 2.0はアプリケーションの実装をPluginで拡張できる仕組みが用意されてる。
デフォで適用されるPluginは↓(play.api.Application.scalaより)
/** * The plugins list used by this application. * * Plugin classes must extend play.api.Plugin and are automatically discovered * by searching for all play.plugins files in the classpath. * * A play.plugins file contains a list of plugin classes to be loaded, and sorted by priority: * * {{{ * 100:play.api.i18n.MessagesPlugin * 200:play.api.db.DBPlugin * 250:play.api.cache.BasicCachePlugin * 300:play.db.ebean.EbeanPlugin * 400:play.db.jpa.JPAPlugin * 500:play.api.db.evolutions.EvolutionsPlugin * 1000:play.api.libs.akka.AkkaPlugin * 10000:play.api.GlobalPlugin * }}} * * @see play.api.Plugin */
数字が小さい方から順番に実行される。
Pluginを自作する場合はplay.api.Pluginというtraitを継承して実装する。
package sample import play.api.{Application, Plugin} class CustomPlugin(app: Application) extends Plugin{ override def onStart() { // 起動時の処理 } override def onStop() { // 終了時の処理 } }
作成したPluginを組み込むにはconf直下にplay.pluginsというファイルを生成して、Pluginのクラスと実行したい順番を定義する。
テスト時のみPluginを適用したい場合はconf直下ではなく、test/resources直下にplay.pluginsを配置すればいい。
401:sample.CustomPlugin
こんな感じでお手軽にPluginを適用できる。