val appDependencies = Seq( // Add your project dependencies here, "com.typesafe" % "play-plugins-guice" % "2.0.3" )ターミナルから依存関係の取得を実行。
$ play dependenciesEclipseで編集するので、Eclipse用の設定を更新。
$ play eclipsifyここまでで環境構築は完了。 ここから、環境設定。 conf/直下にplay.pluginsファイルを作成して、GuicePluginを利用することを宣言する。
ここハマッタ。pluginを利用する場合は準備する必要アリ。
# conf/play.plugins 1500:com.typesafe.plugin.inject.GuicePlugin依存関係をバインドするinitializerを作成。
app/module/Dependencies.javaを作成。
はまったのがここで、パッケージ名とクラス名が決められているので注意
かっこつけてmodules.Dependencies.javaなんてつくったら動かなかった。
DI対象は好きな場所に好きな名前で準備。
package module; import services.UserSearchService; import services.impl.UserSearchServiceImpl; import com.google.inject.Binder; import com.google.inject.Module; public class Dependencies implements Module { public void configure(final Binder binde) { binde.bind(UserSearchService.class).to(UserSearchServiceImpl.class); } }後はDI先でDIフィールドの宣言を行う。
ここも注意点アリ。
@javax.inject.Injectである必要アリ。
package controllers; import static play.Logger.debug; import javax.inject.Inject; import org.codehaus.jackson.node.ObjectNode; import play.data.Form; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; import services.UserSearchService; import forms.UserSearch; public class UserController extends Controller { @Inject static UserSearchService userSearchService; }これで動くはず。