在基于Scala的Play应用程序中,我正在尝试启动单件服务,而无需向控制器发出请求。我按照2.4 API documentation中的指示创建了一个单例类,然后使用Guice的依赖注入库将该类绑定为渴望单例。
即使有急切的绑定,在我通过控制器路由收到请求之后,单身仍然不会被调用。关于我做错了什么的想法?
package models
import com.google.inject.AbstractModule
import com.google.inject.name.Names
class MessageLogModule extends AbstractModule {
def configure() = {
bind(classOf[MessageLogService]).asEagerSingleton
}
}
play.modules.enabled += "models.MessageLogModule"
package models
import javax.inject._
@Singleton
class MessageLogService {
// Create a file to test
println("IN SINGLETON - CREATING NEW FILE")
val file = new java.io.File("howdy.txt")
file.createNewFile
}
sbt compile run
在我发出......
之前,不会调用上面的单例curl http://localhost:9000/
我想要的是MessageLogService在运行服务时启动而不是等待命令到达控制器路由。
答案 0 :(得分:8)
你想要的是:sbt compile start
run
延迟编译和初始化,直到第一次请求允许更快更新 - 刷新 - 看 - 更改开发周期。