我有一个Scala的Play框架应用程序。它使用数据库,我需要在第一个应用程序启动之前将数据加载到数据库中。我想我可以在应用程序中添加一个带有主类的类,并像play -main loadDataClass
一样启动它。它似乎正在工作,但一旦我访问Play.current.configuration
,我需要这个来访问数据库凭据。我得到这个错误:
main线程异常java.lang.RuntimeException: There is no started application
请建议如何实现这一点。我应该以某种方式启动应用程序吗?
您需要创建一个用于在启动时加载数据的模块。在生产模式下(activator start),它将在应用程序启动后运行,在开发模式下(activator run),它将在向服务器发出第一个请求后运行。
创建模块app/modules/PrepareDatabaseModule.scala:
在这个模块里面
package modules
import com.google.inject.AbstractModule
trait PrepareDatabase {}
class PrepareDatabaseClass extends PrepareDatabase {
initialize()
def initialize() = {
// Load your data here
}
}
class PrepareDatabaseModule extends AbstractModule {
def configure() = {
bind(classOf[PrepareDatabase])
.to(classOf[PrepareDatabaseClass]).asEagerSingleton
}
}
在<<p> em> conf/application.conf : play.modules.enabled += "modules.PrepareDatabaseModule"