gpt4 book ai didi

scala - 创建一个 AbstractModule 来为 3rd 方库注入(inject)依赖项

转载 作者:行者123 更新时间:2023-12-04 12:21:55 26 4
gpt4 key购买 nike

我有一个 3rd 方库,我试图将配置注入(inject)到构造函数中。
这是我需要做的:

class MyModule(configuration: Configuration) extends AbstractModule {
override def configure(): Unit = {
bind(classOf[TwitterApi])
.to(classOf[MyTwitterApi])
.asEagerSingleton
}
}
MyTwitterApi 的构造函数不采用 Play.api.Configuration 而是采用 typesafe.config.Config
class MyTwitterApi(config: Config) ...
所以我需要通过 configuration.underlying对于我的构造函数,这怎么可能在这个 AbstractModule 中使用 DI?
我也需要这个实例成为单例。

最佳答案

您可以使用提供程序通过eagerSingleton 设置您的模块

import com.google.inject.{AbstractModule, Provider}

class MyModule(configuration: Configuration) extends AbstractModule {
override def configure(): Unit = {
val twitterApiProvider: Provider[TwitterApi] =
() => new MyTwitterApi(configuration.underlying)
bind(classOf[TwitterApi])
.toProvider(twitterApiProvider)
.asEagerSingleton
}
}
您可以在 - https://scastie.scala-lang.org/sarveshseri/ujwvJJNnTpiWDqdkBJQoFw/2 找到一个包含示例类的工作示例。

关于scala - 创建一个 AbstractModule 来为 3rd 方库注入(inject)依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68410549/

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