我是Scala的新手,我正试图找出依赖注入的最佳方法。我有Java背景,过去常常使用Guice和Spring IoC。
我曾经使用带有@Provider批注的提供者类来选择实现或在Spring中使用beans.xml,只需使用@Inject批注(或在Spring,@ Autowired中)将类的实例注入到我的服务中。
在Scala中,我读到了蛋糕模式,但对我来说似乎相当复杂。我想要实现的就是我已经拥有的Java:获取具有特定实现的接口类型的单例。
我的问题是使用Scala对象类型是否足够。
示例:
trait TestDI { }
class Impl1 extends TestDI { }
class Impl2 extends TestDI { }
object TestDI extends Impl1 { }
所以我只是在我的服务中使用TestDI,它实际上会使用Impl1的实现。所以我的初始界面(特征)和单例对象将具有相同的名称。
答案 0 :(得分:0)
我认为Macwire或Scaldi与Guice风格非常接近。我喜欢Macwire,因为它是基于宏的标准Scala框架,没有使用其他魔法酱(如字节操作)。
其他做DI的方法在我的回答中有描述:
Scala - write unit tests for objects/singletons that extends a trait/class with DB connection