У меня есть приложение Play 2.5.3, которое использует Slick для чтения объекта из базы данных. Классы обслуживания строятся следующим образом:Scala и Slick: DatabaseConfigProvider в автономном приложении
class SomeModelRepo @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) {
val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig.driver.api._
val db = dbConfig.db
...
Теперь мне нужны автономные сценарии Scala для выполнения некоторых операций в фоновом режиме. Мне нужно подключиться к БД внутри них, и я хотел бы повторно использовать существующие классы обслуживания для чтения объектов из БД.
Чтобы создать экземпляр объекта класса SomeModelRepo, необходимо передать некоторый параметр DatabaseConfigProvider в качестве параметра. Я попытался запустить:
object SomeParser extends App {
object testDbProvider extends DatabaseConfigProvider {
def get[P <: BasicProfile]: DatabaseConfig[P] = {
DatabaseConfigProvider.get("default")(Play.current)
}
}
...
val someRepo = new SomeModelRepo(testDbProvider)
однако у меня есть ошибка: «Там не запущенное приложение» в соответствии с «(Play.current)». Кроме того, метод current в объекте Play устарел и должен быть заменен на DI.
Есть ли способ инициализировать объект класса SomeModelRepo в отдельном объекте SomeParser?
С наилучшими пожеланиями
Просьба указать версию игры – cchantep
Это 2.5.3. Я добавил эту информацию к вопросу. – Gandalf