Scala Play 2 Guice依赖注入特征

Ziz*_*Tai 1 dependency-injection scala guice playframework playframework-2.0

在我的应用程序中,我有以下特征/具体类:

在包中models.daos:

trait UserDAO // UserDAO.scala
class UserDAOImpl @Inject() (app: play.api.Appliction) extends UserDAO // UserDAOImpl.scala
Run Code Online (Sandbox Code Playgroud)

在包中controllers:

class Application @Inject() (userDao: UserDAO) extends Controller
Run Code Online (Sandbox Code Playgroud)

但是,当我运行应用程序时,我得到:

ProvisionException: Unable to provision, see the following errors:

1) No implementation for models.daos.UserDAO was bound.
  while locating models.daos.UserDAO
    for parameter 0 at controllers.Application.<init>(Application.scala:15)
  while locating controllers.Application
    for parameter 1 at router.Routes.<init>(Routes.scala:31)
  while locating router.Routes
  while locating play.api.inject.RoutesProvider
  while locating play.api.routing.Router
Run Code Online (Sandbox Code Playgroud)

我是依赖注入的新手,并不知道怎么告诉Guice使用具体的类.

And*_*uba 7

您需要扩展AbstractModule

class DaoModule extends AbstractModule {
  def configure() = {
    bind(classOf[UserDAO])
     .to(classOf[UserDAOImpl])
  }
}
Run Code Online (Sandbox Code Playgroud)

conf/application.conf你需要添加:

play.modules.enabled += "modules.DaoModule"
Run Code Online (Sandbox Code Playgroud)