我现在正在开发一个使用 Scaldi 的项目,我正在学习它,到目前为止看起来很好,但我仍然没有弄清楚它提供的实际功能指南/果汁。
两个框架之间的实际差异是什么?
Scaldi是否更具功能性?
如果我从一个移到另一个,我会失去/获得什么?
答案 0 :(得分:5)
Guice是一个java库,因此它也是用java实现的 成语和常见模式(它大量使用注释和 反射)。另一方面,Scaldi是以实现的方式实现的 Scala的常见模式和习语。所以它使用隐式参数, 类型类,宏,类型标签等。斯卡尔迪的一个重要目标是 避免使用注释,反射和运行时字节码 操纵。即使它的很小一部分使用scala 反射,大多数情况下它是无反射的。这意味着 你负责你的课程的实例化(这不是通过 反射)。作为它的直接结果,scaldi使用隐式Injector 参数,这是实现的必要条件 注释/反射注射机制。斯卡尔迪也有 我没有在guice中看到的一些功能,例如conditional bindings,property injector或macro for constructor injector(其中 类似于macwire,但使用scaldi的注入机制。)