我正在尝试打印"你好"在应用程序启动时控制台。你能解释一下怎么做吗?
我自己尝试了什么:
app/modules/HelloModule.scala
:
package modules
import com.google.inject.AbstractModule
trait Hello {}
class MyHelloClass extends Hello {
initialize() // running initialization in constructor
def initialize() = {
println("Hello")
}
}
class HelloModule extends AbstractModule {
def configure() = {
bind(classOf[Hello])
.to(classOf[MyHelloClass]).asEagerSingleton
}
}
在conf/application.conf
中我添加了:
play.modules.enabled += "modules.HelloModule"
和"你好"我运行activator run
答案 0 :(得分:7)
您需要使用Global object,并覆盖“onStart”方法:
在项目中定义Global对象允许您处理全局对象 您的应用程序的设置。必须在中定义此对象 默认(空)包,必须扩展GlobalSettings。
import play.api._
object Global extends GlobalSettings {
override def onStart(app: Application) {
Logger.info("Application has started")
}
override def onStop(app: Application) {
Logger.info("Application shutdown...")
}
}
您还可以指定自定义GlobalSettings实现类名称 使用application.global配置密钥。
<强>更新强>
正确的方法是使用依赖注入,就像问题中描述的那样。 GlobalSettings could be removed later
问题中的代码没有问题。我在本地设置上验证了它。在开发模式“激活器运行”中的第一个请求之后以及在生产模式“激活器启动”中应用程序启动之后,代码写入“Hello”。
顺便说一下,尝试在日志中使用一些更容易找到的字符串,比如
“-------- APP DZIABLO已经开始--------”
可能是因为你在日志中错过了“你好”(我从一开始就没有认出来)