问题标签 [scaldi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2117 浏览

scala - 比较 Subcut 和 Scaldi

我正在寻找在我的项目中使用的SubCutScaldi。他们各自的入门文档中提供的示例看起来非常相似。除了Getting Started和 scala 文档之外,这两个项目似乎都没有提供文档。

有人可以主要在功能和成熟度/稳定性方面总结这些框架之间的实际差异。我正在研究这些包,因为我需要能够在运行时动态创建和组合配置。运行时配置是我查看这些库而不是使用隐式和/或层蛋糕模式进行 DI/配置的主要原因,因此运行时配置工具对我来说是最重要的。此外,我不认为编译器插件对我来说是一个选项,但是这两个库都可以在没有各自插件的情况下使用,而冗长程度只会略有增加。我目前在 scala-2.9.2 上。

我也对直接在 Scala 中进行运行时 DI/配置的建议感兴趣,但是将我的整个项目转换为 monadic 样式也不是我的选择。

0 投票
1 回答
539 浏览

scala - Scaldi - 绑定到单个/多个实例

我最近从 SubCut 切换到 Scaldi,我发现有一个功能没有记录/丢失:

在 SubCut 中,当您定义绑定时,您可以在不同的绑定模式之间进行选择- toSingletoProviderto moduleInstanceOftoModuleSingle,这决定了注入的实例是创建一次,还是每次执行绑定。我没有看到Scaldi 文档中明确定义的类似行为,所以我想确保我了解如何在 Scaldi 中实现不同的行为:

默认情况下,该to方法是惰性的,并在第一次“请求”时创建注入的实例。apitoNonLazy中有一个我猜它甚至在第一次“请求”之前就创建了实例。还有一个,在下面的例子中......toProvider

...ParticularWidget每次注入Injectable.

我是否正确理解这一点?

0 投票
1 回答
1716 浏览

scala - Scaldi 依赖注入和 Akka Actors

我目前正在探索在 Play2.2 应用程序中使用 Scaldi 进行依赖注入。

我已经阅读了 Scaldi 网站上的文档,但我不清楚如何将它与 Akka 一起使用。

到目前为止,我的项目中有什么:

在 UserService.scala 中,我将使用 UserManager 的一个实例来完成这项工作:

然后根据注入的经理,如果将所有工作委托给经理,演员可能会被嘲笑?

但是,如果管理器需要调用其他只是伴随对象的服务怎么办?或者服务调用也通过伴随对象引用的其他服务?

有人对如何将 Akka 与 Scaldi 集成有一些指示吗?

0 投票
3 回答
3997 浏览

scala - Play 2.3 中带有 DI 的托管控制器(Scaladi / Guice)

提前感谢您抽出时间来看看我目前的游戏问题。

我仍在尝试 Playframework,目前是 2.3 版。

目前我试图弄清楚依赖注入。我遵循了激活器中为 guice 和 scaladi 提供的教程,并且总是导致相同的编译器错误:

这让我觉得我错过了 Playframework 的一个更通用的部分,因为这个问题与特定的 DI 框架无关。

因此,让我描述一下我对 scaladi 的尝试(任何带有 guice 的工作解决方案也将不胜感激):

在 conf/routes 中定义路由:

(添加了 @ 以支持自 play 2.1 afaik 起支持的托管控制器)

定义控制器:

在 app\Global.scala 下定义 Global 以修改 GlobalSetting:

最后是 app\modules\ApplicationModule.scala 下的应用模块:

所以我真的很感激任何帮助来弄清楚为什么 Application 类不能位于包控制器中。同样,我会对任何可行的解决方案感到高兴,可能是 guice 或 scaladi。

谢谢!

编辑: 问题是另一个路由的第二个控制器也在“/conf/routes/”下注册。该控制器尚未管理。因此,在我将上面描述的步骤调整到第二个控制器之后,一切正常。

0 投票
1 回答
491 浏览

scala - Scaldi 绑定到提供程序函数(带有注入键和值的映射参数)

我正在尝试将此存储库从 Guice 移植到 Scaldi。我在/app/utils/di/SilhouetteModule.scala(第 60-65 行)的代码中堆叠:

这就是我现在的位置

我该怎么做才能像上面的代码一样注入 Map?

Scaldi 可以绑定到函数(如 Guice 中的 @Provides 注释)吗?

谢谢

0 投票
2 回答
286 浏览

scala - Scala - 如何将 Option[X] 转换为 Option[y]

我有简单的服务类

使用 scaldi im 将 MockItemService 绑定到 ItemService 然后访问

我想要的是项目的类型是功能而不是项目。功能扩展项目。

0 投票
1 回答
2663 浏览

akka - 消息转到死信而不是发件人(akka路由器)[scala]

实际上,我无法让我的演员(路由器)系统正常工作。我的设置:

我正在尝试在播放控制器中使用 akka 路由器。对于依赖注入,我使用 scaldi。

斯卡迪模块:

akka路由器:

工人:

当我向路由器发送消息(插入用户消息)时,它被正确路由并且工作人员接收到消息,但是当工作人员将消息发送回发件人时,它无法传递,所以它被发送到死信办公室。我不知道如何解决这个问题。有人可以帮助我吗?

提前致谢

0 投票
2 回答
322 浏览

akka - 为什么我不能用 scaldi 绑定到单个参与者实例(akka 路由器)?

我目前正在努力使用 scaldi 进行依赖注入来实现我的 Akka 路由器逻辑。为什么我不能使用 scaldi 绑定到单个 actor 实例,因为我的 actor 是一个路由器,而我只想拥有它的一个实例?我来问这个问题的方式是另一个 stackoverflow entry

我的 scaldi 模块:

这种方式只创建了一个实例,一旦我多次注入我的路由器,它就会从 sender() 方法中获得一个死信actor作为发送者。

当我将绑定更改为...

...它工作得很好,但每次注入都意味着我的路由器的一个新实例。我对吗?

那么我怎样才能实现只有一个可注入的路由器实例呢?

提前致谢

0 投票
1 回答
1087 浏览

forms - 是否可以使用 scaldi 依赖注入注入 scala 对象?

是否可以使用 scaldi 依赖注入注入 scala 对象?如果是这样,我怎样才能得到注射器?

我有一个对象 SignUpForm 必须是单例...

...和一个对象约束

这就是问题所在 - > userservice 需要注入,但只要没有作为构造函数参数传递的隐式 Injector 就不能注入(因为我们在这里有一个对象,所以这是不可能的)

... 我怎么解决这个问题?

提前致谢

0 投票
1 回答
1156 浏览

scala - 使用 scaldi 在 Play 框架中的测试中注入依赖项

我正在寻找一种将依赖项注入测试(在 /tests/models/ 中)的方法,如下所示:

在哪里

/app/modules/WebModule:

/应用程序/全球:

但是在编译时我有以下堆栈跟踪:

可悲的是,我在 Scaldi 文档中没有找到任何关于此事的信息。

有没有办法在测试中注入东西?