gpt4 book ai didi

scala - 如何在 Play 中启动时运行代码!框架 2.4

转载 作者:行者123 更新时间:2023-12-03 22:36:33 27 4
gpt4 key购买 nike

我试图在应用程序启动时将“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
}
}

conf/application.conf我补充说:
play.modules.enabled += "modules.HelloModule"

当我运行 activator run 时不打印“Hello”

最佳答案

您需要使用 Global object ,并覆盖“onStart”方法:

Defining a Global object in your project allows you to handle global settings for your application. This object must be defined in the default (empty) package and must extend 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...")
}

}

You can also specify a custom GlobalSettings implementation class name using the application.global configuration key.



更新:

正确的方法是使用依赖注入(inject),就像问题中描述的那样。 GlobalSettings could be removed later

问题中的代码没有问题。我在本地设置中验证了它。代码在开发模式“激活器运行”中的第一次请求后和生产模式“激活器启动”中的应用程序启动后写入“Hello”。

顺便说一句,尝试在日志中使用一些更容易找到的字符串,比如

“--------APP DZIABLO 已启动--------”

可能是你在日志中错过了“Hello”(我从一开始就没有认出来)

enter image description here

关于scala - 如何在 Play 中启动时运行代码!框架 2.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32583155/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com