如何使用延迟实例化和单例注册绑定

How do I register a binding with both delayed instantiation and as a singleton

我是 scaldi 的新手。我在我的云环境配置中使用了一个 class,我希望在其中发生两件事。

将 [EnvironmentInfo] 绑定到新的 EnvironmentInfo initWith(_.init())

首先,我希望它是一个单例。它检索运行时信息(在本例中为 Google AppEngine)并且它应该在实例化时执行一次。看来initWith是个不错的选择

接下来,我希望实例化延迟到第一个请求。按照执行路径,它在第一次调用之前就被实例化了。

如果我可以延迟实例化,那么 initWith 应该移动到 class 构造函数。

我的回答很简单。我抽象了单例 "state" 并将其作为 'lazy val ...' 访问。