与 Java 的 ServletContextListener 等效的东西是什么

What's the equivalent thing as ServletContextListener for Java

我想问一下 Play 与 ServletContextListener 对于 Java web 的等价物是什么。

在应用程序启动期间,我会从数据库中获取数据并保存在 memory/cache 中,以及其他类似且适合在服务器启动期间完成的事情

在 Java 网络世界中,这通常挂接到 ServletContextListener#contextIntialized

我搜索了 Whosebug,那里有一些答案,但已经过时了

如果不确切地知道 "initialization work" 您在做什么,很难给出完整的答案。但我建议一个好的起点是声明一个 Module as documented in the Play DI documentation.

如果你写一个扩展 AbstractModule 的基本 Module:

package modules

import com.google.inject.AbstractModule
import play.api.{ Configuration, Environment }

class MyModule(
  environment: Environment,
  configuration: Configuration) extends AbstractModule {

  def configure() = {
    ...
  }
}

并在您的 application.conf:

中启用它
play.modules.enabled += "modules.MyModule"

您可以根据应用的 EnvironmentConfiguration 设置进行操作。

文档并没有真正涉及它,但在这里你也可以调用有趣的方法,比如 bindListener() 这将允许你在每个声明的依赖项得到 "provisioned" 时得到通知Google 吉斯。一旦你迷上了 Guice,你就可以做很多事情——也许从 Guice 文档开始 here