dzi*_*blo 14 scala playframework playframework-2.4
我试图在应用程序启动时打印"Hello"到控制台.你能解释一下怎么做吗?
我自己尝试了什么:
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
}
}
Run Code Online (Sandbox Code Playgroud)
在conf/application.conf
我补充说:
play.modules.enabled += "modules.HelloModule"
Run Code Online (Sandbox Code Playgroud)
我跑的时候不会打印"你好" activator run
您需要使用Global对象,并覆盖"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...")
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用application.global配置键指定自定义GlobalSettings实现类名.
更新:
正确的方法是使用依赖注入,就像问题中描述的那样.GlobalSettings可以在以后删除
问题中的代码没有问题.我在本地设置上验证了它.代码在开发模式"激活器运行"中的第一个请求之后以及在生产模式"激活器启动"中的应用程序启动之后写入"Hello".
顺便说一下,尝试在日志中使用一些更容易找到的字符串,比如
"-------- APP DZIABLO已经开始--------"
可能是因为你错过了日志中的"Hello"(我从一开始就没有认出来)
归档时间: |
|
查看次数: |
6319 次 |
最近记录: |