我有一個使用SqLite的play-scala應用程序。我的表是這樣定義的:在演員中動態訪問數據庫
@Singleton
class DataSets @Inject()(protected val dbConfigProvider: DatabaseConfigProvider, keys: PublicKeys) extends DataSetsComponent
with HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._
val DataSets = TableQuery[DataSetsTable]
def all = db.run(DataSets.sortBy { _.id }.result)
...
}
我控制器通過DI可以訪問:
@Singleton
class DataSetsController @Inject() (dataSets: DataSets, env: play.Environment) extends Controller {
...
如何在演員獲得數據庫處理?
class TrainActor @Inject() (dataSets: DataSets) extends Actor {
...
當然不起作用,因爲Guice沒有找到DataSets類。
編輯:澄清:我不想在控制器中使用actor來訪問數據庫(通過ask),而是在請求之後從控制器啓動一些資源密集型計算並將它們存儲在db中之後(異步)。
如果我想能夠在控制器中實例化新角色而不是發送消息給另一個,該怎麼辦? – joni