首页 文章

尝试使用Silhouette play 2.4 play-slick 1.0.0实现加载模式

提问于
浏览
0

我试图对播放剪影种子样本做一些改进,目的是避免在postgres中手动创建表格 . 我试图遵循中使用的实现

https://github.com/playframework/play-slick/tree/master/samples/computer-database

,但是当我将一个bind(classOf [InitialData]) . asEagerSingleton()添加到InitialData类时,我遇到了一些注入问题 . 我得到:注入构造函数的错误,java.lang.RuntimeException:没有启动的应用程序 . 我上传了暂定的应用程序

https://github.com/renexdev/Play-Auth-Slick-Seed-Load-Schema

. 我在UserImpl.scala中修改了一些方法,但是重要的文件是/app/modules/InitialData.scala,当app启动时,它由一个bind(classOf [InitialData])中的Abstract Module调用.asEagerSingleton() .
我被建议将执行上下文传递给initialData类 . 我尝试了def doSomething(隐式ec:ExecutionContext)

https://github.com/alexandru/scala-best-practices/blob/master/sections/4-concurrency-parallelism.md

和导入play.api.libs.concurrent.Execution.Implicits._建议

Play Framework 2.1 - Cannot find an implicit ExecutionContext

但没有成功 . 如果有人能给我一些关于注射或构造函数可能出错的见解,我将不胜感激 . 谢谢你的时间 . 夏瑞

1 回答

  • 1

    如果将类绑定为急切单例,则必须注意您的代码不引用静态 play.api.Play.current 调用 . Guice绑定在Play应用程序启动之前连接,绑定为eager singleton的实例也将在应用程序启动之前实例化 . 因此,如果您在此代码中引用已启动的应用程序,则会看到错误"There is no started application" .

    您的代码中的问题是 DAOSlick trait在静态引用 play.api.Play.current 的帮助下静态创建 DatabaseConfig . 您应该将 DatabaseConfigProviderDatabaseConfig 实例注入DAO实现中 . 请查看Play Framework documentation应如何做到这一点 .

相关问题