1
在我的應用程序有以下特點/混凝土類:斯卡拉播放2 Guice的依賴注入特徵
在包models.daos
:
trait UserDAO // UserDAO.scala
class UserDAOImpl @Inject() (app: play.api.Appliction) extends UserDAO // UserDAOImpl.scala
在包controllers
:
class Application @Inject() (userDao: UserDAO) extends Controller
然而,當我運行應用程序時,我得到:
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
我是新來的依賴注入,並不真正知道如何告訴Guice使用具體的類。
這給了我一個「無法初始化全局對象」異常。我將它改爲'lazy val',這個錯誤消失了,但它沒有任何效果(仍然是原始錯誤)。如果我在'UserDAO'特性上使用'@ImplementedBy(classOf [UserDAOImpl])'註釋,那麼一切運行良好,但這樣做會破壞注入的目的......我使用的是Play 2.4。 –
在'Global'對象中設置綁定現已被棄用。以編程方式綁定依賴關係的推薦方法是使用模塊。謝謝! –